如何使用Java實作回溯演算法
void backtrack(参数) { if (满足结束条件) { 将当前解加入结果集; return; } for (选择 : 所有可选项) { 做选择; backtrack(新参数); 撤销选择; } }
public class Permutations { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> result = new ArrayList<>(); backtrack(nums, new ArrayList<>(), result); return result; } private void backtrack(int[] nums, List<Integer> permutation, List<List<Integer>> result) { if (permutation.size() == nums.length) { result.add(new ArrayList<>(permutation)); return; } for (int i = 0; i < nums.length; i++) { if (permutation.contains(nums[i])) { continue; } permutation.add(nums[i]); backtrack(nums, permutation, result); permutation.remove(permutation.size() - 1); } } }
以上程式碼中,我們透過backtrack()方法求解全排列問題。在每一步中,我們選擇一個數字,並將其加入permutation清單。當permutation的大小等於nums陣列的大小時,我們將目前解加入結果集。然後,我們撤銷選擇,繼續嘗試其它的選擇。
透過學習本文,讀者應該對如何使用Java實作回溯演算法有了一定的了解。希望本文對讀者能有所幫助!
以上是如何使用java實作回溯演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!