尝试在递归方法中添加int[]
一段时间时遇到了一些麻烦。List<int[]>
我正在获取所有int[]
大小的排列N
以用于不同的功能。我想将这些排列中的每一个都添加到前面提到的列表中。但是,似乎不能为所有排列添加 int[] (shortestPath),老实说,我没有足够的递归经验来知道为什么每个数组的打印输出有效,但是添加到 List 只是添加第一个 arr (作为参数传递的那个) 6 次。
我的代码如下:
public int counter = 0;
public List<int[]> shortestPaths = new ArrayList<int[]>();
public void permute(int[] arr, int startIndex) {
int size = arr.length;
if (arr.length == (startIndex + 1)) {
System.out.print("Permutation " + counter + " is: ");
for (int i = 0; i < size; i++) {
if (i == (size - 1)) System.out.print(arr[i] + "\n\n");
else System.out.print(arr[i] + ", ");
}
shortestPaths.add(arr);
counter++;
} else {
for (int i = startIndex; i < size; i++) {
int[] copy = arr.clone();
int tmp = copy[i];
copy[i] = copy[startIndex];
copy[startIndex] = tmp;
permute(copy, startIndex + 1);
//tmp = arr[i];
//arr[i] = arr[startIndex];
//arr[startIndex] = tmp;
copy = null;
}
}
}
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
permute(arr, 0);
System.out.print("\n\n\n\n");
for (int[] a : s.shortestPaths) {
System.out.println(a[0] + ", " + a[1] + ", " + a[2] + "\n\n");
}
PS - 打印输出只是为了快速查看数据结构的状态。当实现完全正常运行时,它们当然会被删除:) 此外,此代码嵌套在一个类中,该类具有更多与矩阵处理相关的功能。该函数尤其是最短路径算法的辅助函数。
提前感谢那些比我更了解递归并且愿意提供帮助的人!
Chris