ホームページ > Java > &#&チュートリアル > Java で再帰を使用して、長さが不明な複数のリストから可能なすべての組み合わせを生成するにはどうすればよいですか?

Java で再帰を使用して、長さが不明な複数のリストから可能なすべての組み合わせを生成するにはどうすればよいですか?

DDD
リリース: 2024-11-04 09:45:30
オリジナル
452 人が閲覧しました

How can I generate all possible combinations from multiple lists of unknown length using recursion in Java?

Java での再帰を使用した複数のリストからのすべての組み合わせの反復生成

さまざまなリストに直面するシナリオを想像してください。それぞれの長さは非公開です。あなたの仕事は、すべての一意の組み合わせの可能性を組み込んだ単一のリストを作成することです。例として、次のリストを考えてみましょう:

X: [A, B, C] 
Y: [W, X, Y, Z]
ログイン後にコピー

これらのリストから、12 個の組み合わせを生成できるはずです:

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
ログイン後にコピー

3 つの要素からなる追加の 3 番目のリストが導入された場合、組み合わせの合計数は 36 に拡張されます。

この複雑な組み合わせを生成するには、再帰が強力なツールとして登場します。

<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) {
    if (depth == lists.size()) {
        result.add(current);
        return;
    }

    for (int i = 0; i < lists.get(depth).size(); i++) {
        generatePermutations(lists, result, depth + 1, current + lists.get(depth).get(i));
    }
}</code>
ログイン後にコピー

この細心の注意を払って作成された再帰アルゴリズムでは、パラメーター リストは次のことを表します。不定の量と長さを特徴とする入力リストのコレクション。結果リストは、プロセス中に生成されたすべての順列のリポジトリとして機能します。パラメータ Depth と current は、それぞれ入力リストの走査と個々の組み合わせの構築を容易にします。

この生成関数の最終的な呼び出しは、プロセス全体を調整します。

<code class="java">generatePermutations(lists, result, 0, "");</code>
ログイン後にコピー

再帰と Java Collection Framework の調和のとれたコラボレーションにより、このアルゴリズムにより、任意の大規模なリストの集合から考えられるすべての組み合わせを簡単に生成できるようになります。

以上がJava で再帰を使用して、長さが不明な複数のリストから可能なすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート