算法訓練 找零錢

資源限制
時間限制:1.0s   內存限制:256.0MB
問題描述
  有n我的正在飯堂排隊買海北雞飯。每份海北雞飯要25元。奇怪的是,每一個人手裏只有一張鈔票(每張鈔票的面值爲2五、50、100元),並且飯堂阿姨一開始沒有任何零錢。請問飯堂阿姨可否給全部人找零(假設飯堂阿姨足夠聰明)
輸入格式
  第一行一個整數n,表示排隊的人數。

  接下來n個整數a[1],a[2],...,a[n]。a[i]表示第i位學生手裏鈔票的價值(i越小,在隊伍裏越靠前)
輸出格式
  輸出YES或者NO
樣例輸入
4
25 25 50 50
樣例輸出
YES
樣例輸入
2
25 100
樣例輸出
NO
樣例輸入
4
25 25 50 100
樣例輸出
YES
數據規模和約定
  n不超過1000000
 
須要多種狀況的考慮,即25,50和100元的三種狀況。
 1 #include<iostream>
 2 //author:QIANG
 3 using namespace std;
 4 int main(){
 5     int n,s;
 6     cin>>n;
 7     int tf=0,f=0;
 8     int flag=1;
 9     for(int i=0;i<n;i++){
10         cin>>s;
11         if(flag==1){
12             if(s==25){
13                 tf++;
14             }else if(s==50){
15                 if(tf>0){
16                     tf--;
17                     f++;
18                 }else{
19                     flag=0;
20                 }
21             }else{
22                 if(f>0){
23                     f--;
24                     s=s-50;
25                 }
26                 if(s==50){
27                     if(tf>0){
28                         tf--;
29                     }else{
30                         flag=0;
31                     }
32                 }else{
33                     if(tf>=3){
34                         tf=tf-3;
35                     }else{
36                         flag=0;
37                     }
38                 }
39             }
40         }
41     }
42     if(flag==1){
43         cout<<"YES";
44     }else cout<<"NO";
45     return 0; 
46 } 
相關文章
相關標籤/搜索