母函数的基本方程的介绍

来源:互联网 发布:快读小说怎么没网络了 编辑:程序博客网 时间:2024/06/11 23:16

母函数我已经基本明白了,但是想起来学习母函数的方程用了不少时间,所以
写下了具体的分析过程,让和我一样初学母函数的acmer更好学一点。
 
学习母函数我个人觉得就是学来其实简单,但是兵无常势,水无常形,关键是变化
之后也能弄懂才行,但是万变不离其宗,我个人觉得必须对母函数的方程非常了解,
才能变化应之。

 

#include<iostream>usingnamespace std; constint _max = 10001;//c1是保存各项质量砝码可以组合的数目//c2是中间量,保存没一次的情况intc1[_max], c2[_max];  intmain(){   //int n,i,j,k;    int nNum;  //    int i, j, k;     while(cin >> nNum)    {       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;           }       }       cout << c1[nNum] << endl;    }    return 0;} 


以nNum=2为例吧
①:其实就是对其进行最基本的赋值过程,c2数组只是个媒介,c1数组才是我们
最终想要的,在对c1进行赋值1 的过程中,是因为无论怎么样都肯定有一种即
(1+x+x^2+x^3....),不明白不要紧
②  这里代表的是第几个式子,在写这个代码时,作者已经在前面列举了(1+x+x^2)
这种情况,所以从第二个式子(1+x^2)开始喽
③我理解这里表达的是一个式子的各项指数,比如(1+x+x^2)的各种指数,
0,1,2,若n 为其他值,则有3,4,5,6...n。
④为什么k+j<=nNum 呢,原因很简单,因为我们在nNum=2时候,只需要求x^2的
系数就够了,别的指数前的系数不用求的所以只会求出X的指数为0,1,2的前的系数
而我们第二个式子时每个X的指数的差都是2,所以就+i 了
⑤最后进行替换,c2又再一次接受了暂时放置对应指数的系数的值,终于完成了任务


 

原创粉丝点击