hdu2082找单词(母函数)

来源:互联网 发布:怎样在淘宝找超a货 编辑:程序博客网 时间:2024/06/06 07:07

本题的链接为:找单词,本题用到的知识点为母函数,不懂的请先自行百度学习。下面贴下本题代码:

//母函数 : 3层for循环,最外层,记录它正在与第几个多项式相乘,第二层,表示c1中的每一项,第三层表示后面被乘多项式的每一项#include<iostream>#include<cstring>using namespace std;const int maxn = 27;int num[maxn];//代表数量int c1[51], c2[51];//c1保存当前得到的多项式各项系数,c2保存每次计算时临时结果int main(){int i, j, n, cnt, T;cin >> T;while (T--){cnt = 0;memset(c1, 0, sizeof(c1));memset(c2, 0, sizeof(c2));for (i = 1; i <= 26; i++){cin >> num[i];}for (i = 0; i <= num[1] && i <= 50; i++)//初始化第一个多项式c1[i] = 1;for (i = 2; i <= 26; i++)//要乘剩下的25个多项式{for (j = 0; j <= 50; j++)//c1的各项的指数{for (n = 0; n <= num[i] * i && (n + j <= 50); n += i) //num[i] * i 表示被乘多项式各项的指数,(X^0*i + X^1*i+X^2*i+....){c2[n + j] += c1[j];}}for (j = 0; j <= 50; j++){c1[j] = c2[j];c2[j] = 0;}}for (j = 1; j <= 50; j++)cnt += c1[j];cout << cnt << endl;}return 0;}


0 0