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() メソッドを使用して完全な順列問題を解決しています。各ステップで、数値を選択し、それを順列リストに追加します。順列のサイズが nums 配列のサイズと等しい場合、現在の解を結果セットに追加します。次に、選択を解除して、他のオプションの試行を続けます。
この記事を読むことで、読者は Java を使用してバックトラッキング アルゴリズムを実装する方法をある程度理解できるはずです。この記事が読者のお役に立てれば幸いです!
以上がJavaを使用してバックトラッキングアルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。