当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 算法:现在你在玩一款游戏,叫做节奏大师。它有三种判定

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

2020年11月11日  | 移动技术网IT编程  | 我要评论
算法:现在你在玩一款游戏,叫做节奏大师。它有三种判定2020年11月10日,微众银行校招笔试,算法第二题一、题目描述题目:现在你在玩一款游戏,叫做节奏大师。它有三种判定:P : Perfect完美,加200分。G : Great很棒,加100分。M : Miss错过,不加分也不扣分,但累计三次Miss就会输掉游戏。另外有一种奖励是连击奖励。一旦连续三个Perfect之后,后续连击的Perfect分数将变成250分,但一旦打出了Great或者Miss则连击数将重新开始计算。你的任务是根据

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

2020年11月10日,微众银行校招笔试,算法第二题


一、题目描述

题目:
现在你在玩一款游戏,叫做节奏大师。它有三种判定:
P : Perfect完美,加200分。
G : Great很棒,加100分。
M : Miss错过,不加分也不扣分,但累计三次Miss就会输掉游戏。
另外有一种奖励是连击奖励。一旦连续三个Perfect之后,后续连击的Perfect分数将变成250分,
但一旦打出了Great或者Miss则连击数将重新开始计算。
你的任务是根据游戏记录计算分数。特别地,失败记为零分。

输入描述:
    一行一个字符串,描述你的游戏记录。
    保证字符串长度小于等于10000
输出描述:
    一行一个正整数表示得分

样例输入:
    PPPPPGPPMP
样例输出:
    1800

二、解题思路

首先定义变量:

		int index = 0;  //字符的下标
        int length = s.length(); //输入字符的长度
        long score = 0;  //记录分数
        int prefect = 1;//记录连续为prefect的次数
        int miss = 0;//记录miss
  1. 输入字符串
  2. 如果miss大于3,结束游戏
  3. 如果为P,且次数小于3,分数加200
  4. 如果有连续两次为P,那么prefect次数加1
  5. 如果三次以上为P,分数加250
  6. 如果为G,分数加100,prefect置1
  7. 如果为Miss,prefect置1,miss加1

三、实现代码

代码如下(示例):

package weizhong;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        //输入字符串
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            String s = sc.next();
            int index = 0;  //字符的下标
            int length = s.length(); //输入字符的长度
            long score = 0;  //记录分数
            int prefect = 1;//记录连续为prefect的次数
            int miss = 0;//记录miss

            for (int i = 0; i < length; i++) {
                //如果miss大于3,结束游戏
                if (miss >= 3){
                    System.out.println("lose");
                    return;
                    //如果为P,且次数小于3,分数加200
                }else if (s.charAt(index) == 'P' && prefect <= 3){
                    score += 200;
                    index++;
                    //如果有连续两次为P,那么prefect次数加1
                    if (index > 0 && s.charAt(index - 1) == 'P'){
                        prefect++;
                    }
                    //如果三次以上为P,分数加250
                }else if (s.charAt(index) == 'P' && prefect > 3){
                    score += 250;
                    index++;
                    //如果为G,分数加100,prefect置1
                }else if (s.charAt(index) == 'G'){
                    score += 100;
                    prefect = 1;
                    index++;
                    //如果为Miss,prefect置1,miss加1
                }else {
                    index++;
                    miss++;
                    prefect = 1;
                }
            }
            System.out.println(score);
        }
    }
}

本文地址:https://blog.csdn.net/my2889214412/article/details/109630668

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网