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

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

Susan Sarandon
リリース: 2024-11-02 13:34:03
オリジナル
483 人が閲覧しました

How to Generate All Possible Combinations from Multiple Lists in Java Using Recursion?

Java で複数のリストからすべての組み合わせを生成する

それぞれ長さが異なる任意の数のリストから、考えられるすべての一意の組み合わせを含む単一のリストを生成することは、挑戦的な課題。この記事では、再帰の概念を使用した Java ベースのソリューションについて説明します。

問題ステートメント

それぞれの長さが不明な数のリストが与えられた場合、目標は次のとおりです。これらのリストの要素の可能なすべての組み合わせを含む単一のリストを作成します。たとえば、リスト X と Y が次のように定義されている場合:

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

期待される出力は 12 個の組み合わせを持つリストになります:

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

Solution

このソリューションは再帰を利用して、可能なすべての組み合わせを生成します。リストはリストのリストに保存され、順列を保持する結果リストが作成されます。 generatePermutations メソッドは、リストのリスト、結果リスト、深さパラメーター、および現在の順列を表す文字列を入力として受け取ります。

generatePermutations Method

<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) {
    // Base case: if we've reached the end of the list of lists
    if (depth == lists.size()) {
        result.add(current);
        return;
    }

    // Get the current list at the specified depth
    List<Character> currentList = lists.get(depth);

    // Iterate over each element in the current list
    for (int i = 0; i < currentList.size(); i++) {
        // Recursively call generatePermutations to build permutations
        generatePermutations(lists, result, depth + 1, current + currentList.get(i));
    }
}</code>
ログイン後にコピー

generatePermutations メソッドへの最初の呼び出しでは、深さが 0 に設定され、現在の文字列が空の文字列に設定されます。再帰呼び出しごとに深さが増加し、現在の文字が現在の文字列に連結されます。深さがリストの数と等しい場合に基本ケースに達し、その時点で現在の順列が結果リストに追加されます。

再帰を利用することで、generatePermutations メソッドは、可能なすべての組み合わせを効果的に構築します。入力リストから要素を抽出し、結果リストに追加します。このソリューションは効率的で、入力リストの任意の数または長さに適応できます。

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

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