【发布时间】:2016-06-30 14:31:40
【问题描述】:
我很乐意得到一些帮助。我有以下问题: 我得到了一个数字列表和一个目标数字。
subset_sum([11.96,1,15.04,7.8,20,10,11.13,9,11,1.07,8.04,9], 20)
我需要找到一种算法,该算法将找到所有组合在一起的数字,即目标数字之和:20。 首先找到所有 int 等于 20 接下来,例如,这里的最佳组合是:
- 11.96 + 8.04
- 1 + 10 + 9
- 11.13 + 7.8 + 1.07
- 9 + 11
剩余价值 15.04。
我需要一个只使用 1 个值一次的算法,它可以使用 1 到 n 个值来求和目标数。
我在 PHP 中尝试了一些递归,但内存很快耗尽(50k 值),因此 Python 中的解决方案会有所帮助(时间/内存方面)。 我很高兴在这里得到一些指导。
一种可能的解决方案是:Finding all possible combinations of numbers to reach a given sum
唯一的区别是我需要在已经使用过的元素上放置一个标志,这样它就不会被使用两次,我可以减少可能的组合数量
感谢任何愿意提供帮助的人。
【问题讨论】:
-
在网上搜索“动态规划子集总和”,玩得开心;)
-
已经做到了。没有任何解决方案可以帮助我。你能提供一些链接吗?
标签: php python algorithm dynamic-programming subset-sum