D&C_整数划分问题

问题描述:

  将正整数n表示成一系列正整数之和,n=n1+n2+...+nn,求总的划分数

算法思路:

  定义q(n,m)表示最大加数不大于m,从递归角度分析q(n,m)得

      1,                              m=1或n=1

      q(n,n-1)+1,                 m>=n

  q(n,m-1)+q(n-m,m),  m<n

程序:

1 int division(int n, int m)
2 {
3     if(n < 1 || m < 1) return 0;
4     if(n == 1 || m == 1) return 1;
5     if(n > m)
6         return division(n - m, m) + division(n , m - 1);
7     if(n == m || n < m)
8         return division(n, n-1) + 1;
9 }

 

posted @ 2014-08-14 21:10  hedgehog小子  阅读(123)  评论(0)    收藏  举报