使用Java 中的遞歸從多個列表中迭代生成所有組合
設想一個場景,您遇到各種各樣的列表,每個都有一個未公開的長度。您的任務是產生一個包含所有獨特組合可能性的單一清單。為了說明這一點,請考慮以下清單:
X: [A, B, C] Y: [W, X, Y, Z]
從這些清單中,您應該能夠產生12 種組合:
[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
如果引入了額外的包含3 個元素的第三個列表,組合總數將擴大到36 個。
為了實現這種複雜的組合生成,遞歸作為一種強大的方法應運而生。 tool:
<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>
在這個精心設計的遞歸演算法中,參數列表代表輸入列表的集合,其特徵是數量和長度不確定。結果清單作為過程中產生的所有排列的儲存庫。參數深度和電流分別促進輸入清單的遍歷和單一組合的建構。
此生成函數的最終呼叫協調整個過程:
<code class="java">generatePermutations(lists, result, 0, "");</code>
透過遞歸和Java 集合框架的和諧協作,該演算法使您能夠毫不費力地從任意大的集合中產生每種可以想像的組合清單。
以上是如何使用 Java 中的遞歸從多個未知長度的清單中產生所有可能的組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!