【发布时间】:2019-02-10 09:57:31
【问题描述】:
我正在尝试创建一个简单的骰子游戏。要计算分数,我必须找到总和为特定值的所有子集,然后选择最有价值的组合。所有号码只能选择一次。可能最容易用一个例子来描述:
Values = {1, 1, 1, 2, 4, 4}
Target value = 5
Possible subsets = {1, 1, 1, 2} and {1, 4}
现在可以选择:
{1, 1, 1, 2} (= worth 5)
或
{1, 4} {1, 4} (= worth 10)
所以在本例中,我希望算法返回 10 而不是 5。
我已经设法解决了“寻找可能的子集”部分,但我正在努力寻找找到的子集的最有价值的组合。谁能帮我? :(
【问题讨论】:
-
我想“最有价值的组合”是指出现次数*总和。我说的对吗?
-
不确定您的意思,但子集中的数字之和 = 该子集的值。在这个例子中,它只能选择第一个子集的一个或第二个子集的两个,因为只有三个 1
-
{1,4}{1,4} 值 10。由于您没有给我们任何一般性线索,只是一个例子,我试图理解这个问题。我的假设是通过 2 * (1 + 4) 得到十个,也就是说,你有两次 {1,4} 的组合。我很可能误解了这个问题,但这并不奇怪,因为您没有给出正确的规范。
-
请出示您的编码尝试。
标签: algorithm recursion subset