hdu 1028
整数拆分问题:n可以由多少种组合的数之和构成;
组合问题即n个相同小球放进n个相同的盒子里,盒子里球个数可以为0,问有多少种放置的方法。简单母函数。
#include<stdio.h> #include<string.h> #define N 130 int main () { int n,c1[N],c2[N]; int i,j,k; while (scanf("%d",&n)!=EOF) { memset(c2,0,sizeof(c2)); for (i=0;i<=n;++i) c1[i]=1;//初始化系数 for (i=2;i<=n;++i) { for (j=0;j<=n;++j) for (k=0;k+j<=n;k+=i)//系数叠加,如果个数限制,k<=i*num[i]; c2[j+k]+=c1[j]; for (j=0;j<=n;++j) { c1[j]=c2[j]; c2[j]=0; } } printf("%d\n",c1[n]); } return 0; }