【发布时间】:2017-01-24 19:34:24
【问题描述】:
我正在寻找一种算法,它可以找到将整数 n 表示为 m(非负)整数之和的所有方法。我对 m=6 和 n⩽20 特别感兴趣。找到所有可能性的最快方法是什么(使用计算机,而不是手动)。如果可能的话,我只想看看六个整数的组合,顺序不相关(即 [1, 2, 0, 0, 0, 0] 和 [2, 1, 0, 0, 0, 0 ] 计为 1 个组合)。
最简单的方法是简单地尝试所有小于或等于 20 的 6 个整数的排列,然后只将总和为 20 的排列添加到我们的结果中(如果我们不想查看排序,则删除双精度数) .然而,这似乎需要很长时间,因为要检查 20^6 种可能性需要相当长的时间。
解决这个问题的更有效方法是什么?
【问题讨论】:
-
提示:如果您按排序顺序生成重复,则可以轻松避免重复。如果你有 m 个数字要填写,它们总和为 n,并且数字按升序排列,那么第一个数字的可能性是什么?