24h購物| | PChome| 登入
2009-04-04 14:21:18| 人氣1,316| 回應0 | 上一篇 | 下一篇

有獎徵答:換零錢

推薦 0 收藏 0 轉貼0 訂閱站台

DP(零錢問題)

/*******************************************************/

#include<stdlib.h>     
#include<stdio.h>     
#include<string.h>  
long long int money[50001],a,b,c,n;  
char x[500000];  
main()     
{     
 long long int cost[10]={1,5,10,20,50,100,200,500,1000,2000};  
 money[0]=1;  
 for(a=0;a<10;a++)  
  for(b=cost[a];b<50001;b++)  
     money[b]=money[b]+money[b-cost[a]];  
 while(gets(x))    
  {  
   if(x[0]==48&&strlen(x)==1) break;  
   if(x[strlen(x)-1]==49&&strlen(x)==1) {printf("0\n");continue;}  
   long long int m=strlen(x);  
   long long temp=0,sum=0;  
   for(a=0;a<m;a++)  
    {  
     if(x[a]<=57&&x[a]>=48)  
      temp=temp*10+x[a]-48;  
     else 
      {  
       sum=sum+temp;  
       temp=0;  
      }   
    }  
    sum=sum+temp;  
    printf("%lld\n",money[sum]-1);  
  }  
 return 0;         
}

台長: 來源不明

您可能對以下文章有興趣

人氣(1,316) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ZeroJudge 基礎+原創題庫 |
此分類下一篇:Oh! My Zero!!
此分類上一篇:數字包牌

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文