【发布时间】:2014-08-07 19:52:52
【问题描述】:
我需要一个程序来处理字母“01234”的所有组合,长度为 5,其中数字加起来不超过 4。
示例 00013, 00031, 00101, 10120
但不是 11213, 00341
问题:
- 如何计算加起来为 X 的字符串数?
- 如何生成所有加起来为 X 的字符串?
- 如何生成所有加起来为一个数字
- 这个概念在数学中叫什么? 更新:
- 如何找到与 X 相加的数字子集?
任何程序语言或伪代码都可以。通过概念,我的意思是找到将加起来等于给定总和的数字子集。所以,另外我想得到一个算法来找到这些子集。查找所有组合,然后过滤掉匹配的组合很容易,但对于较大的字母(数字字符串)来说,时间效率不高。
【问题讨论】:
-
您可以使用五个嵌套的
for循环或一个Cartesian Product 来执行此操作。 -
@Edward 我已经有了生成所有组合的解决方案。我把它放在 Excel 中并过滤它。然后我有了解决方案,但不是一个灵活、高效的程序。
-
一些谷歌搜索给了我“总和问题”、“同组问题”、“数硬币问题”和“背包问题”的概念。在我看来我的问题相当于一个大小为 4 和一组 {1,1,1,1,1,2,2,2,2,2,3,3,3,3, 3,4,4,4,4,4} 然而,背包问题被定义为找到一种有效的解决方案,而不是所有的解决方案!
标签: math combinations