C语言名题精选百则之整数的分割方式递归解
文章目錄
对于一个正整数n而言,它的一个分割(Partition),就是把n写成若干个正整数的和,但不计较书写的顺序。编写一个程序,输入n,把n的所有分割显示出来。
说明: 如果n=7, 那么有如下的分割.
7
6 1
5 2
5 1 1
4 3
4 2 1
4 1 1 1
3 3 1
3 2 2
3 2 1 1
3 1 1 1 1
2 2 2 1
2 2 1 1 1
2 1 1 1 1 1
1 1 1 1 1 1 1
一共有15个,仔细观察在各个输出中前后两者的差异,并且自己做一做其他的结果(比如n=5时有7个,n = 6时有11个等),就不难写出程序了。
将整数的所有不同分割数目递归解稍加改变,就可以得到一个递归解,解答见integer_partition_method.py