首页 > 解决方案 > 如何检查矩阵中的哪些行和列等于哪些行和列

问题描述

我有一个练习打印有多少对索引 (i, j) 在第 i 行和第 j 列中只有一个并打印所有对例如

1 1 1
1 0 0
1 1 1
1 1 1

所以我必须打印出 (0, 0); (2, 0); (3, 0) 然后打印出对数。

练习是在 C 中这是我到目前为止所拥有的

for(int i=0; i<m; i++){
    for(int j=0; j<n; j++){
        if(A[i][j] == 1 && A[i+1][j+1] == 1){
            br++;
            printf("(%d, %d)\n",i,j);
        }
    }
}
printf("%d",br);

标签: cmatrix

解决方案


在该代码中,您只是遍历矩阵中的每个元素并检查它是否等于 1,并且对角相邻的元素(向右然后向下移动)也等于 1。该输出不会是预期的输出,它只会给出 (2,0) 和 (2,1) 作为结果,并且非常重要:分段错误

请注意,当您在最后一行/列中时,您正在检查元素和对角右下的元素,该元素在矩阵的边界之外。

有许多可能的解决方案,但是对于每个元素,您应该检查它所属的整个行和列(使用 2 个循环)并检查所有元素是否都是一个。


推荐阅读