[英]Recursive method to print all the permutations of an array
我構建了一個遞歸方法,它應該打印數組的所有排列,但它只打印第一個選項。
這是代碼:
public static void printPermutation(int[] nums, int index, int[] print_arr) {
if (index == nums.length) {
System.out.println(Arrays.toString(print_arr));
}
for (int i = 0; i < nums.length; i++) {
if (nums[i] > 0) {
print_arr[index] = nums[i];
nums[i] = -1;
printPermutation(nums, index + 1, print_arr);
}
}
}
通過將 nums 設置為 -1 從 nums 中“刪除”一個數字后,您需要將其添加回來,以便循環的下一次迭代以相同的 state 開始。 否則你最終會用 -1 填充nums
。 有了這個改變,我正確地得到了 1,2,3 的所有排列:
if (nums[i] > 0) {
print_arr[index] = nums[i];
nums[i] = -1;
printPermutation(nums, index + 1, print_arr);
// reset back to initial state
nums[i] = print_arr[index];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.