我有一個非常奇怪的問題,它有一些限制使得它很難解決。我有一個列表清單,我想做這些清單中所有項目的組合。每個項目都有一個名稱和一個值。這裏有一個例子:如何在飛行中執行組合動作
主要列表:
- 表01:
- 項目01:名稱:name01,值:value01
- 項目02:名稱:name02,值:value02
- 表02:
- 項目01:名:姓名03,2值:value03
- 表03:
- 項目01:名:姓名04,2值:value04
- 項目02:名稱:name05,值:value05
最終的結果應該像這樣的:
一些名單:
- 項目01:name01:value01,姓名03,2:value03,姓名04,2:value04
- 項目02:name02:value02,姓名03,2:value03,姓名04,2:value04
- 項目03:姓名03,2:value03,姓名03,2:value03,姓名04,2:value04
- 項目04:name01:value01,姓名03,2:value03,姓名04,2:value05
- 項目05:name02:value02,姓名03,2:value03,姓名04,2:value05
- 項目06:姓名03,2:value03,姓名03,2:value03,姓名04,2: value05
新列表非常包含像散列圖那樣的項目。
的約束如下:
- 我不能收集到新的列表和它們混合,因爲這些列表可能會很快變得非常大。
- 我正在使用某種類似觀察者的API,所以我需要儘快讓觀察者瞭解結果,以便我不會使用太多內存。
換句話說,這個組合生成器可能會用X數量的列表進行填充,每個列表可能包含N個項目,我必須在不使用太多內存的情況下生成它們的組合。
我不希望一次處理多於5個列表,但我希望使算法儘可能靈活地對代碼進行更改。
我正在解決java中的問題,但該算法也應該在其他語言同樣工作,因爲它可能會被翻譯。
你有什麼想法和建議嗎?
在此先感謝。
P.S.我認爲遞歸不會很好。我正在嘗試使用while循環和一些嵌套循環的想法,但想象這應該如何工作變得非常困難。
你的例子不是很清楚,並且包含 - 我認爲是 - 一個錯誤。我可以推薦3個2,1和3元素列表((a,b)(c)(d,e,f))。這將導致6個解決方案(笛卡爾產品或交叉產品)。如果你喜歡,請閱讀:=(name01,value01)。但是你的例子有一些列表項目03:n3v3 n3v3 - 兩次。這不是意圖,是嗎? – 2011-02-17 01:27:06