複数のリストからすべての組み合わせを生成する方法
質問:
与えられた変数番号さまざまな長さのリストを使用して、入力リストからの要素の一意の組み合わせをすべて含む単一のリストを生成する方法を決定します。
例:
次のリストを考えてみましょう。
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 サイトの他の関連記事を参照してください。