バックトラッキングアルゴリズムとその応用問題
組合せ問題(Leetcode77)
// アプローチ: 1からnまでの数を再帰的に探索し、リストでk個の組み合わせが作成されたかを記録
// 各ループの開始値が前の値と重複しないように、開始インデックスを設定
class Solution {
private List<List<Integer>> 結果;
private List<Integer> 現在の組み合わせ;
private int 目標サイズ;
public ...
7月2日 17:53 投稿
Javaリストデータの順列生成アルゴリズム
Javaにおけるリスト要素の順列生成
与えられたリストの全要素を使用する順列(全ての可能な並び順)を生成する方法について解説します。ここでは再帰的アプローチを用いた実装を示します。
実装コード
import java.util.ArrayList;
import java.util.List;
public class PermutationGenerator {
public static List<List<Integer>> generateAllPerm ...
5月22日 20:59 投稿
アルゴリズム問題 - バックトラッキング手法
1.バックトラッキングの理論的基礎
1.1バックトラッキングとは何か
バックトラッキングは探索アルゴリズムの一種であり、再帰処理に基づいて動作します。
再帰呼び出しの結果としてバックトラッキングが発生するため、再帰があれば必ずバックトラッキングも存在します。
1.2バックトラッキングの性能
バックトラッキングは計算効率が悪いという特徴があります。これは、す ...
5月20日 01:32 投稿
LeetCode解説:216.組合せ総和IIIと17.電話番号の文字列組み合わせ [バックトラッキング編]
LeetCode 216.組合せ総和III
問題リンク:216.組合せ総和III
問題説明
1から9までの数字からk個の数字を選び、その合計がnとなるすべての有効な組み合わせを見つけます。以下の条件を満たす必要があります:
使用できる数字は1から9まで
各数字は最大で1回まで使用可能
結果には重複する組み合わせを含めない
例1:
入力:k = 3, n = 7
出力: [[1,2,4]]
説明: 1 + 2 + ...
5月18日 15:03 投稿