文章目錄

所谓的整数的分割(Partition of an Integer), 指的就是把一个正整数写成若干个正整数的和,但这里只计较有多少种分割方式,而不计较它的内容。例如,4=3+1,2+2,2+1+1,1+1+1+1+1, 再加上自己,就一共有5种分割方式。编写一个程序,输入一个正整数,输出它有多少种分割方式。

说明: 以下是几点重要的提示

  1. 要把n进行分割,其实不完全只针对n, 还要看分割中最大的值是什么。例如,要把10进行分割,若在分割中最大的值是6,即10=6+…, 那么”…”的部分充其量的值是4而已,不仅如此,和还须等于4;因此,如果知道”…”, 即4有多少种分割方式,也正是在分割10时,最大值为6的分割方式!
  2. 应该分析一下n这个输入值,与在分割中的极大值(如1.中的6)之间有什么联系,找出来,问题就解决了。
  3. 不要忘了,递归是非常有效的武器

解答见integer_partition.py

打赏作者

文章目錄