Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何迭代二维数组而不多次访问元素?_Arrays_Multidimensional Array_2d_Transpose_In Place - Fatal编程技术网

Arrays 如何迭代二维数组而不多次访问元素?

Arrays 如何迭代二维数组而不多次访问元素?,arrays,multidimensional-array,2d,transpose,in-place,Arrays,Multidimensional Array,2d,Transpose,In Place,我想使用2D数组在适当的位置转置一个正方形矩阵。但是,当我使用嵌套的for循环遍历数组时,元素被访问两次,导致没有发生转置 我只想访问每个数组元素一次以更正此问题 如何更改当前代码以执行此操作 // transpose in-place for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int temp = a[i][j]; a[i][j] =

我想使用2D数组在适当的位置转置一个正方形矩阵。但是,当我使用嵌套的for循环遍历数组时,元素被访问两次,导致没有发生转置

我只想访问每个数组元素一次以更正此问题

如何更改当前代码以执行此操作

// transpose in-place
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int temp = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = temp;
        }
    }
//原地转置
对于(int i=0;i

谢谢。

将您的内循环条件更改为当j等于i时停止:

for (int j = 0; j < i; j++)
for(int j=0;j
这样,您只需迭代矩阵的三角形区域(由i=j定义的对角线一侧的值形成),并将每个值与对角线另一侧的相应值交换