鑑於兩個數字表和彙總的列表(沒有在任何特定的順序)的對集:找到對應列出資金
a = [1,2,3]
b = [4,5,6]
c = [6,7,8]
我如何才能找到對d
的所有集合,其中d[k] = (a[i], b[j])
這樣c[k] = a[i] + b[j]
哪裏對使用a和b而沒有替換? (所有的列表可以有重複)
d = [(1,5), (3,4), (2,6)]
d = [(2,4), (1,6), (3,5)]
對於c = [7,7,7]
:
d = [(1,6), (2,5), (3,4)]
(1個答案,因爲所有的排列基本上等同)
我想和長度的列表來做到這一點〜 500,所以一個天真的匹配/回溯搜索是不可能的。
你想要一組序列序列,其中序列中的每個序列的總數都與序列c相匹配?而且,在第一個例子中,[(1,5),(1,6),(2,6)]等等 - 還有更多這樣的 - 也包括在內嗎? – 2013-02-28 09:44:10
沒有替換。我試圖解決的問題是,每個列表都包含幾十名學生。我可以訪問每個列表和兩者的總和,但想知道總分數,可能的子分數。如果問題更容易解決(或增加解決方案的可能性),我可以訪問這些列表中的N個,並可以向數據庫查詢任何子集的總計列表。 – georgeyiu 2013-02-28 09:48:58
在維基百科中將此問題描述爲[數字三維匹配](http://en.wikipedia.org/wiki/Numerical_3-dimensional_matching)。這是NP完整的。 – 2013-02-28 11:25:12