http://acm.hdu.edu.cn/showproblem.php?pid=1028
母函数的简单运用。。
大牛解说http://www.wutianqi.com/?p=596
#include <stdio.h> #define _max 10001 // c1是保存各项质量砝码可以组合的数目 // c2是中间量,保存没一次的情况 int c1[_max], c2[_max]; int main() { int nNum; int i, j, k; while(scanf("%d",&nNum)!=EOF) { for(i=0; i<=nNum; ++i) { c1[i] = 1; c2[i] = 0; } for(i=2; i<=nNum; ++i) { for(j=0; j<=nNum; ++j) for(k=0; k+j<=nNum; k+=i) { c2[j+k] += c1[j]; } for(j=0; j<=nNum; ++j) { c1[j] = c2[j]; c2[j] = 0; } } printf("%d ",c1[nNum]); } return 0; }