wsc810 发表于 2009-6-18 11:52:56

如何编程求出给定任意数字n的加法拆分数量

本帖最后由 wsc810 于 2009-6-18 12:25 编辑

例如 5 可以拆分为 5,4+1, 3+2,3+1+1,2+2+1 ,2+1+1+1,1+1+1+1+1 共7种,该问题的每一种拆分法都对应着约瑟夫环的某种循环状态,
见帖子http://bbs.emath.ac.cn/thread-1526-1-1.html
该问题还 可以表述为求不定方程 $x_1+2x_2+3x_3+...+nx_n=n(x_i>=0)$ 所有解数。这个问题好像在数论中也有专门的研究,谁能说说是怎样的。

litaoye 发表于 2009-6-18 14:30:39

印象中是符合第二类斯特灵数!

到处瞎逛 发表于 2009-6-19 20:28:08

本帖最后由 到处瞎逛 于 2009-6-19 23:41 编辑

整数无序拆分的问题,有现成的递推公式。

用mathcad弄了一个程序。


也可以通过构建母函数F(x)=(1+x+x^2+...+x^n)(1+x^2+x^4+...+x^n)...(1+x^n),将这个母函数展开后,求出每一个x^k前面的系数Ck,就是对应的整数K有多少种拆分的形式。
链接http://www.cppblog.com/mythit/archive/2009/05/06/82088.html上有这样的程序。

wsc810 发表于 2009-6-20 21:32:14

3# 到处瞎逛
.xmcd是什么文件?用什么方式打开。

到处瞎逛 发表于 2009-6-20 21:52:23

本帖最后由 到处瞎逛 于 2009-6-20 22:08 编辑

3# 到处瞎逛
.xmcd是什么文件?用什么方式打开。
wsc810 发表于 2009-6-20 21:32 http://bbs.emath.ac.cn/images/common/back.gif
mathcad的文件。

mathcad属于小众软件了吧。

不过编写一般的小程序还是比较简便的,而且还直观。

wbrat 发表于 2009-8-4 11:04:48

在Mathematica中只需:
例 n=5;
输入:

IntegerPartitions


结果:
{{5}, {4, 1}, {3, 2}, {3, 1, 1}, {2, 2, 1}, {2, 1, 1, 1}, {1, 1, 1, 1, 1}}
页: [1]
查看完整版本: 如何编程求出给定任意数字n的加法拆分数量