杭电 2082 找单词

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main()

{

   int ch[27];

   int c1[100],c2[100];

   int n;

   scanf("%d",&n);

   while(n--)

   {

       memset(ch,0,sizeof(ch));

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

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

       for(int i=1;i<=26;i++)

       {

           scanf("%d",&ch[i]);

       }

       c1[0]=1;//做了一个灵活的处理,此时c1不是第一个括号的内容。 

       for(int i=1;i<=26;i++)//第一到第二十六个括号依次处理。 

       {

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

           {

               for(int k=0;(k<=ch[i]*i)&&(j+k<=50);k+=i)//和模板差不多,只是判断条件多了一个。 

               {

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

               }

           }

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

           {

              c1[j]=c2[j];

              c2[j]=0;

           }

       }

       int sum=0;

       for(int i=1;i<=50;i++)

       {

           sum+=c1[i];

       }

       printf("%d\n",sum);



   }

   //system("pause");

   return 0;

}

你可能感兴趣的:(杭电)