母函数

听了kuangbin的把杭电上的数学分类的题都先做一遍,遇到不会就去学习别人的博客上的讲解,没想到遇到的第二道题竟然是母函数

那在这里就当是复习一下下了

题意

对一个整数进行拆分

 

代码

#include<iostream>
using namespace std;
#define M 101000
int c1[M],c2[M];
int main()
{
 int n,i,j,k;
 while(cin>>n){
  for(i=0;i<=n;i++){
   c1[i]=1;
   c2[i]=0;
  }
  for(i=2;i<=n;i++){
   for(j=0;j<=n;j++){
    for(k=0;k+j<=n;k+=i){
     c2[k+j]+=c1[j];
    }
   }
   for(j=0;j<=n;j++){
    c1[j]=c2[j];
    c2[j]=0;
   }
  }
  cout<<c1[n]<<endl;
 }
 return 0;
}

其实母函数就是模拟多项式的展开一项一项的计算 

核心代码其实就是三个for循环

下面讲一下每一个循环的意思

 第一个for循环是有除掉第一个()还有多少个括号

第二个for循环是枚举前面一个括号里的每一项(其实是不断更新的)

第三个for循环每次想乘后一个括号的多项式

数组的下标是多项式的指数,数组的值就是要求的组合种数

(突然发现大一的时候学的东西是那么的简单)

posted on 2015-05-07 20:10  AC_WQYYY  阅读(62)  评论(0)    收藏  举报

导航