母函数模板

  1. #include <stdio.h>
  2. #define MAX 10000
  3. int c1[MAX], c2[MAX];
  4. // c1是保存各项质量砝码可以组合的数目
  5. // c2是中间量,保存每一次的情况
  6. // 每个n的种类无限
  7. // (1 + x^1 + x^2 + ...+ x^n)(1 + x^2 + x^4 +....+x^n)(1 + x^3 +...+ x^n)....(1 + x^n)
  8. int main()
  9. {
  10. int n;
  11. while( scanf("%d", &n)!=EOF)
  12. {
  13. for(int i=0; i<=n; i++) //第一项全部至0
  14. {
  15. c1[i]=1; c2[i]=0;
  16. }
  17. for(int i=2; i<=n; i++)
  18. {
  19. for(int j=0; j<=n; j++)
  20. for(int k=0; k+j<=n; k+=i)
  21. c2[k+j] += c1[j]; //一定得是累加
  22. for(int j=0; j<=n; j++) //结束一轮运算赋值
  23. {
  24. c1[j] = c2[j]; c2[j] = 0;
  25. }
  26. }
  27. printf("%d ", c1[n]);
  28. }
  29. return 0;
  30. }





附件列表

    原文地址:https://www.cnblogs.com/sober-reflection/p/329724ea4f33fb659e96dcfa8e05267d.html