Javaでさまざまな長さの複数のリストからすべての一意の組み合わせを生成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-27 13:34:29
オリジナル
269 人が閲覧しました

How to Generate All Unique Combinations from Multiple Lists of Varying Lengths in Java?

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

質問:

与えられた変数番号さまざまな長さのリストを使用して、入力リストからの要素の一意の組み合わせをすべて含む単一のリストを生成する方法を決定します。

例:

次のリストを考えてみましょう。

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

必要な出力:

12 個の一意の組み合わせ:

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

Java 実装:

再帰の使用:

<code class="java">import java.util.List;

public class Permutations {

    public static void main(String[] args) {
        List<List<Character>> lists = List.of(List.of('A', 'B', 'C'), List.of('W', 'X', 'Y', 'Z'));
        List<String> result = new ArrayList<>();
        generatePermutations(lists, result, 0, "");
        System.out.println(result);
    }

    private static 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>
ログイン後にコピー

仕組み:

この関数は再帰を使用して、考えられるすべての組み合わせを調べます。これまでの部分的な組み合わせを表す現在の文字列を維持し、どのリストが検査されているかを示すために深さを増分します。基本的なケースは、すべてのリストが使い果たされたときに発生し、その時点で現在の部分的な組み合わせが結果リストに追加されます。それ以外の場合、関数は現在のリストを繰り返し処理し、それ自体を再帰的に呼び出し、各文字を現在の組み合わせに追加して深さを進めます。

使用例:

<code class="java">Input: lists = [[A, B, C], [W, X, Y, Z]]

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!