题目地址:点击打开链接
思路:简单模板题改动,从第一个式子搞赋初值
AC代码:
#include <iostream>
#include<cstring>
using namespace std;
int c1[55],c2[55];
int num[26];
int main()
{
int n,i,j,k,sum;
cin>>n;
while(n--)
{
memset(c1,0,sizeof(c1));
memset(c2,0,sizeof(c2));
sum = 0;
for(i=0; i<26; i++)
{
cin>>num[i];
}
c1[0] = 1;
for(i=0; i<26; i++)
{
for(j=0; j<=50; j++)
{
for(k=0; k*(i+1)+j<=50 && k <= num[i]; k++)
{
c2[k*(i+1)+j] += c1[j];
}
}
for(j=0; j<=50; j++)
{
c1[j] = c2[j];
c2[j] = 0;
}
}
for(i=1; i<=50; i++)
{
sum += c1[i];
}
cout<<sum<<endl;
}
return 0;
}