整数划分问题:
原理:
可以分成 4种子问题:
f(n,m)表示数字n的最大加数为m的所有划分的个数。
#include <stdio.h>
int split(int n, int m)
{
if(n==1||m==1) return 1;
else if(n<m) return split(n,n);
else if(n==m) return split(n,n-1)+1;
else return split(n,m-1)+split(n-m,m);
}
int main()
{
int n , m;
printf("请输入两个数:");
scanf("%d%d",&n,&m);
printf("f(%d,%d)的个数为:%d",n,m,split(n,m));
return 0;
}