母函数

解决一类整数拆分问题

void mu()

{

    memset(c1,0,sizeof(c1)) ;

    memset(c2,0,sizeof(c2)) ;

    for(int i=0 ;i<=a[0]*b[0] ;i+=a[0])//a[i]第i项单价 b[i]第i项数量 

        c1[i]=1 ;

    for(int i=1 ;i<n ;i++)//n代表总共的单价数量

    {

        for(int j=0 ;j<=sum ;j++)//sum代表幂次上限 

        {

            for(int k=0 ;k+j<=sum && k<=a[i]*b[i] ;k+=a[i])

                c2[j+k]+=c1[j] ; 

        }

        for(int j=0 ;j<=sum ;j++)

        {

            c1[j]=c2[j] ;

            c2[j]=0 ;

        }

    } 

}
View Code

最后c1[i]表示i次幂的系数

你可能感兴趣的:(函数)