2016-05-08 75 views
0

雖然我的問題的一部分已在本主題中得到解答;從多個子集中,找到所有可能的數字組合以獲得給定的總和

Finding all possible combinations of numbers to reach a given sum

有一個其他功能我在尋找。

該網頁的紅寶石溶液和更重要的是最後一行上向下滾動,

subset_sum([3,9,8,4,5,7,10],15)

我想知道如何通過多個數組,從每個數組中挑選一個數字並達到設定值。 我問的原因是我玩一款名爲Heroclix的遊戲。每件作品都有一定的價值,球員可以讓球隊成倍數倍。 我想要避免的是在一個團隊中多次使用同一個命名角色,只是因爲他們碰巧有不同的點數成本。

+1

@ sawa的權利,你應該在這裏陳述你的問題。事實上,我甚至沒有提到前面提到的問題。怎麼樣,「給定一個數組數組」arr「,我想確定是否可以從'arr'的每個元素(數組)中選擇一個數字,使得這些數字的總和等於給定總數」。如果數字是非負數或正數,你應該這樣說。 –

+0

我沒有說清楚你需要編輯你的問題。 –

+0

我回答了你的問題嗎? –

回答

0
arr = [[1,2,3], [5,7,8], [4,9,13]] 
target = 19 

如果你只想要一個解決辦法:如果你想讓所有的解決方案

arr[0].product(*arr[1..-1]).find { |a| a.reduce(:+) == target } 
    #=> [1, 5, 13] 

arr[0].product(*arr[1..-1]).select { |a| a.reduce(:+) == target } 
    #=> [[1, 5, 13], [2, 8, 9], [3, 7, 9]] 

對於兩種:

arr[0].product(*arr[1..-1]) 
    #=> [[1, 5, 4], [1, 5, 9], [1, 5, 13], [1, 7, 4], [1, 7, 9], [1, 7, 13], 
    # [1, 8, 4], [1, 8, 9], [1, 8, 13], [2, 5, 4], [2, 5, 9], [2, 5, 13], 
    # [2, 7, 4], [2, 7, 9], [2, 7, 13], [2, 8, 4], [2, 8, 9], [2, 8, 13], 
    # [3, 5, 4], [3, 5, 9], [3, 5, 13], [3, 7, 4], [3, 7, 9], [3, 7, 13], 
    # [3, 8, 4], [3, 8, 9], [3, 8, 13]] 

Array#product

相關問題