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;
}

猜你喜欢

转载自blog.csdn.net/DragonChilder/article/details/83451015