更改数组中的列

Changing columns in array

我在交换时遇到问题 columns.I 有 int[n][n] matrix.Next 我有列表(大小为 n!)和数组(长度为 n),它包括所有排列数字 1,2,...,N([2,1,3,4,..,n][1,4,3,2,..,n]...等))。对于此列表中的每个排列,我想制作具有不同列顺序的特定矩阵。这是我的代码,它不起作用:

int[][] matrix={{1,2,3},{4,5,6},{7,8,9}};
Arraylist<int[][]> matrices=new Arraylist<>();
for (int[] permute : permutations)
{
     int[][] newMatrix=matrix;
     for (int i = 0; i < n; i++) 
         {
         if (permute[i] == i + 1)
             continue;
         }
       newMatrix=swapColumn(newMatrix, i, permute[i] - 1);
}
matrices.add(newMatrix.clone());    
}

方法 swapColumn 有效 correctly.Condition 是因为交换了同一列。当我打印矩阵时,它打印 n!* 原始矩阵 谁能帮帮我?

  • 第一件事

这甚至无法编译,因为您在循环范围外使用 newMatrix=swapColumn(newMatrix, i, permute[i] - 1); 并且 i 没有在循环外声明

for (int i = 0; i < n; i++) 
         {
         if (permute[i] == i + 1)
             continue;
         }`
  • 第二件事 :

    函数 swapColumn 它的作用是将列源复制到列目标,这样列目标的原始值就会丢失,因此当您需要将它放在其他列中时,您不会拥有这一切你将拥有的是新的影响值

  • 第三件事

matrices.add(newMatrix.clone());超出了置换循环的范围,因此会引发编译错误,因为 newMatix 是在循环范围内声明的