相关疑难解决方法(0)

生成数字的分区

我需要一个算法来生成所有可能的正数分区,我想出了一个(作为答案发布),但它是指数时间.

该算法应该返回所有可能的方式,数字可以表示为小于或等于其自身的正数之和.例如,对于数字5,结果将是:

  • 4 + 1
  • 3 + 2
  • 3 + 1 + 1
  • 2 + 2 + 1
  • 2 + 1 + 1 + 1
  • 1 + 1 + 1 + 1 + 1

所以我的问题是:有更高效的算法吗?

编辑:问题的标题是"数字的总和分解",因为我真的不知道这叫什么.ShreevatsaR指出它们被称为"分区",所以我相应地编辑了问题标题.

algorithm numbers decomposition

34
推荐指数
3
解决办法
2万
查看次数

如何确定数字可以分解为较小数字的总和的方式

我的朋友给了我这个问题他在接受采访时被问到他无法回答.经过几个小时的思考,我们无法提出解决方案.

考虑一下三号.我需要编写一个程序来计算不同的方式,你可以将数字写为小于数字的数字之和.

例如:

如果数字是2,它可以写成sum(1,1)

如果数字是3,它可以写成sum(1,1,1),sum(1,2),sum(2,1)

如果数字是4,它可以写成sum(1,1,1,1),sum(1,3),sum(3,1),sum(1,2,1),sum(2,1) ,1),总和(1,1,2),总和(2,2).7种不同的方式

如果数字是5,它可以写成sum(1,1,1,1,1),sum(1,1,1,2),sum(1,1,2,1),sum(1, 2,1,1),总和(2,1,1,1)等

如何编写程序来确定数字可以分解为较小数字的总和的方式

如果使用http://www.programminglogic.com/integer-partition-algorithm/中的算法将sum(1,2)和sum(2,1)视为等效,我能够找到解决问题的方法.

但问题是总和(1,2)和总和(2,1)是不同的.我根本看不到这样做的模式.

任何帮助,将不胜感激.我只是想知道解决方案.

c python algorithm

4
推荐指数
2
解决办法
1840
查看次数

标签 统计

algorithm ×2

c ×1

decomposition ×1

numbers ×1

python ×1