首页 > 试题广场 >

节奏小师

[编程题]节奏小师
  • 热度指数:607 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

现在你在玩一款游戏,叫做节奏小师。它有三种判定

P : Perfect完美,加200分。

G : Great很棒,加100分。

M : Miss错过,不加分也不扣分,但累计三次Miss就会输掉游戏。

 另外有一种奖励是连击奖励。一旦连续三个Perfect之后,后续连击的Perfect分数将变成250分,但一旦打出了Great或者Miss则连击数将重新开始计算。

你的任务是根据游戏记录计算分数。特别地,失败记为零分。


输入描述:

一行一个字符串,描述你的游戏记录。

 对于前40%数据,保证字符串长度小于等于100

对于100%数据,保证字符串长度小于等于10000



输出描述:

一行一个正整数表示得分

示例1

输入

PPPPPGPPMP

输出

1800
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        int score = 0;
        int perfect = 0;
        int miss = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if ( ch == 'P') {
                miss = 0;
                perfect++;
                if (perfect <= 3) {
                    score += 200;
                }else if (perfect > 3) {
                    score += 250;
                }
            } else if (ch == 'G') {
                perfect = 0;
                miss = 0;
                score += 100;
            } else if (ch == 'M') {
                perfect = 0;
                miss++;
                if (miss == 3) {
                    score = 0;
                    break;
                }
            }
        }
       System.out.println(score);
    }
}
发表于 2021-09-14 14:56:12 回复(0)