如果我有以下矩阵A:
A = {1,2,3}
{7,9,1}
{5,3,2}
如何轻松返回矩阵中不同行的数量?在这种情况下,输出必须是:“3”
我尝试创建一个函数“行”:
void rows (int a[N][N], int row[N], int x){
for (int i=0;i<N;i++){
row[i]=a[x][i];
}
}
然后,使用函数“check”我尝试检查行是否不同:
int check ( int a[N][N])
{
int row1[N];
int row2[N];
int j=0;
rows(a,row1,j);
rows(a,row2,j+1);
int count = 0;
for ( int i=0; i<N; i++){
for ( int j=0; j<N; j++){
if ( row1[i] != row2[j]){
count++;
}
}
}
return count;
}
但是返回错误的数字,有什么建议吗?
最佳答案
您的算法完全错误。通过添加 break
,当所有行不同时它“有效”,但当某些行相同时它会中断。它计算行数,以便存在与它不同的另一行。例如,如果您在
1 2 3
4 5 6
1 2 3
您将得到一个答案 3
,但您应该得到一个 2
。
算法应该是这样的:
- 假设所有行都是不同的(
result = N
) - 对于每一行
i
,查看它下面的行 - 如果
i
行下方的任何行j
等于row[i]
,则递减result
并跳出内循环 - 在外循环结束时,
result
包含您的答案。
关于c++ - 返回矩阵 A 中不同行数的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539267/