それぞれ長さが異なる任意の数のリストから、考えられるすべての一意の組み合わせを含む単一のリストを生成することは、挑戦的な課題。この記事では、再帰の概念を使用した 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 サイトの他の関連記事を参照してください。