#6734: 請問要怎麼修改才不會逾時呢


austin8831 (noname)

學校 : 不指定學校
編號 : 20063
來源 : [115.82.164.57]
最後登入時間 :
2012-11-10 15:36:29
d119. 有獎徵答:換零錢 -- B88000005 | From: [1.34.68.86] | 發表日期 : 2012-07-03 20:25

code如下:

# include <iostream> 

#include <cstring>

using namespace std;

   

    

int main()    

{    

  long long int money[11]={0,1,5,10,20,50,100,200,500,1000,2000};    

  long long int tab[11][52000];    

  int sum,i,j,k,l;    

  char s[9999];    

  while(cin.getline(s,9999))    

  {    

    l=strlen(s);    

    s[l++]=' ';s[l]='\0';    

    sum=0;k=0;    

        

    for(i=0;i<l;i++)    

      {    

        if (s[i]==' ')    

          {    

            sum+=k;    

            k=0;    

          }    

        else    

          k=k*10+s[i]-48;          

      }    

          

    for(i=1;i<=sum;i++)tab[0][i]=0;    

    tab[0][0]=1;    

    for(i=1;!((money[i]>sum) ||(i>10));i++)    

      {    

        for(j=0;j<=money[i];j++) tab[i][j]=tab[i-1][j];   

           

        for(j=0;j<=sum-money[i]+1;j++) tab[i][j+money[i]]=tab[i][j]+tab[i-1][j+money[i]];    

      }    

    //brow();    

    i--;    

    cout<<(tab[i][sum]-1)<<endl;    

  }    

      

 }     

 

希望請大家多多幫忙 

 
ZeroJudge Forum