如果我有以下矩阵A:
A = {1,2,3}
{7,9,1}
{5,3,2}
Run Code Online (Sandbox Code Playgroud)
我如何轻松返回矩阵中不同行的数量?在这种情况下,输出必须是:"3"
我试图创建一个函数" 行 ":
void rows (int a[N][N], int row[N], int x){
for (int i=0;i<N;i++){
row[i]=a[x][i];
}
}
Run Code Online (Sandbox Code Playgroud)
然后,使用函数" 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;
}
Run Code Online (Sandbox Code Playgroud)
但是返回错误的号码,有什么建议吗?
你的算法是完全错误的.添加break它后,当所有行都不同时"工作",但是当某些行相同时它会中断.它计算行数,以便存在与其不同的另一行.例如,如果您运行它
1 2 3
4 5 6
1 2 3
Run Code Online (Sandbox Code Playgroud)
你会得到一个答案3,但你应该得到答案2.
算法应该是这样的:
result = N)i,请查看它下面的行j下面的任何行i等于row[i],则递减result并退出内部循环result包含您的答案.