1 问题定义
2.问题分析
最大加数等于6的划分个数有1个;
最大加数等于5的划分个数有1个;
最大加数等于4的划分个数有2个;
最大加数等于3的划分个数有3个;
最大加数等于2的划分个数有3个;
最大加数等于1的划分个数有1个;
解题思路:对于数据n,递归计算最大加数等于x的划分个数+最大加数不大于x-1的划分个数,最大加数x从n开始,逐步变小为n-1,…,1,从而求解出问题
- m=1,最大加数不大于1,意味着小于等于1,但是不可能小于1,所以只能等于1,这样的划分只有一个,即全部为1
- 当m>n时,q(n,m)=q(n,n)
例如:q(6,8)=q(6,6)- 当n=m时,q(n,m)=1+q(n,n-1)
q(6,6)=1+q(6,5)- 当n>m>1时,q(n,m)=q(n,m-1)+q(n-m,m)
3 核心算法
<例如
q(6,6)= 1+q(6,5)
= 1+q(6,4)+q(1,5)
= 1+q(6,4)+q(1,1)
= 1+q(6,4)+1
= 2+q(6,4)
= 2+q(6,3)+q(2,4)
= 2+q(6,3)+q(2,2)
= 2+q(6,3)+1+q(2,1)
= 2+q(6,3)+1+1
= 4+q(6,3)
= 4+q(6,2)+q(3,3)
= 4+q(6,2)+1+q(3,2)
= 4+q(6,2)+1+q(3,1)+q(1,2)
= 4+q(6,2)+1+1+1
= 7+q(6,2)
= 7+q(6,1)+q(4,2)
= 7+1+q(4,2)
= 8+q(4,1)+q(2,2)
= 8+1+1+q(2,1)
= 8+1+1+1
=11