杭电 1085 Holding Bin-Laden Captive!

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main()

{

   int num1,num2,num3;

   int c1[10000],c2[10000];//万恶的数组,害我又一次纠结了,本来,我开1000的,结果一直wa,后来我在看了一下题目,发现竟然是说num-i<=1000,然后我们要求的数组的大小为num1*1+num2*2+num3*5的上限,为8000; 

   while(scanf("%d%d%d",&num1,&num2,&num3),num1||num2||num3)

   {

       for(int i=0;i<=num1+(num2*2)+(num3*5);i++)

       {

           c1[i]=0;

           c2[i]=0;

       }//这里要注意,要初始化到num1+(num2*2)+(num3*5)                                                   

       for(int i=0;i<=num1;i++)

       {

          c1[i]=1;

       }

       for(int i=0;i<=num1;i++)

       {

           for(int j=0;j<=num2*2;j+=2)

           {

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

           }

       }

       for(int i=0;i<=num1+(num2*2);i++)

       {

           c1[i]=c2[i];

           c2[i]=0;

       }

       for(int i=0;i<=num1+(num2*2);i++)

       {

          for(int j=0;j<=num3*5;j+=5)

          {

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

          }

       }

       for(int i=0;i<=num1+(num2*2)+(num3*5);i++)

       {

           c1[i]=c2[i];

           c2[i]=0;

       }

       int i;

       for(i=0;i<=num1+(num2*2)+(num3*5);i++)

       {

           if(c1[i]==0)

           {

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

               break;

           }

       }

       if(i==num1+(num2*2)+(num3*5)+1)

       {

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

       }

   }

   //system("pause");

   return 0;

}

你可能感兴趣的:(apt)