正整数的划分问题
/* * 正整数的划分问题 * 6 * 5+1 * 4+2=4+1+1 * 3+3=3+2+1=3+1+1+1 * 2+2+2=2+2+1+1=2+1+1+1+1 * 1+1+1+1+1+1 */#include<stdio.h>/* * 将正整数n分解为最大加数为m的组合 */int getDivideNum(int m,int n){ if(m==1||n==1)return 1; else if(m>n)return getDivideNum(n,n); else if(m==n)return 1+getDivideNum(m-1,n); else if(m<n)return getDivideNum(m-1,n)+getDivideNum(m,n-m);}int main(){ int m,n; m=2; n=6; int count=getDivideNum(m,n); printf("count=%d\n",count); return 0;}
?
int main(){ int n = 6,i,j; int a[n+1]; a[0]=1; for(i=1;i<n;i++) for(j=i;j<n;j++) a[j]+=a[j-i] printf("count:%d\n",a[n]);}int main(){ int n = 6,i,j; int a[n+1]; a[0]=1; for(i=1;i<=n;i++) for(j=i;j<=n;j++) a[j]+=a[j-i] printf("count:%d\n",a[n]);}