1. 程式人生 > >zcmu 1376: 天天酷跑

zcmu 1376: 天天酷跑

1376: 天天酷跑

Time Limit: 1 Sec Memory Limit: 128 MB

Description

在天天酷跑這個遊戲中,玩家的目的是為了收集更多的分數和奔跑更遠的距離。能增加分數的道具一共有4種,分別是金幣銀幣銅幣和動物頭像。其中金幣能增加5分,銀幣能增加3分,銅幣1分,動物頭像則能增加10分。天天酷跑中還有一種叫做點石成金的道具,可以在接下來10秒內將獲得的銀幣銅幣變成金幣。假設玩家在1秒內只能獲得一樣道具(包括得分的道具),且若玩家處於點石成金的狀態下獲得了點石成金道具,則會重新整理點石成金的持續時間(既點石成金的持續時間又變成了10秒),給定接下來n秒內每秒出現的道具,計算出經過n秒後玩家能獲得多少分數。
Input

多組測試資料,每組測試資料的第一行為一個正整數n(1<=n<=10^6)。第二行為n個字元('A’表示金幣,'B’表示銀幣,'C’表示銅幣,'D’表示動物頭像,'E’點石成金)。
Output

對於每組測試資料輸出一個整數代表n秒後獲得的分數。
Sample Input

5
ABCDE
5
EDCBA
Sample Output

19
25
HINT

Source

【分析】
enmmmm感覺理清思路之後,其實還是不復雜的

【程式碼】

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() { int n; while(scanf("%d",&n)!=EOF) { char y[1000005]; scanf("%s",y); double z=0,x=0;//x是點石成金的時間 for(int i=0;i<n;i++) { switch(y[i]) { case 'A':if(x==0)z+=5;else {x--;z+=5;}break; case
'B':if(x==0)z+=3;else {x--;z+=5;}break; case 'C':if(x==0)z+=1;else {x--;z+=5;}break; case 'D':if(x==0)z+=10;else {x--;z+=10;}break; case 'E':x=10;break; } } printf("%.0lf\n",z); } return 0; }