c++ - 返回矩阵 A 中不同行数的最快方法是什么?

标签 c++ matrix

如果我有以下矩阵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/

相关文章:

matrix - OpenCV 乘以标量和矩阵

c++ - MingW 缺少 Win32 Crypto API 中的一些功能

c++ - std::map 使用比较参数检查第一个和第二个值

c++ - 回调需要const函数,如何传递对象的实例成员

arrays - 将多维数组与相同大小的矩阵相乘

matlab - 自动广播中 `eye(2)`和 `[1, 0; 0, 1]`的区别

python - numpy合并上三角和下三角

c++ - 编写跨平台 C++ 代码(Windows、Linux 和 Mac OSX)

c++ - 这不是 const auto& 多余的吗?

matlab - 对每行不同范围的元素求和并替换