每日一道编程题(6)

青蛙得分问题

在这里插入图片描述

给出解法

import java.util.Scanner;
import java.util.Stack;

public class qingwa {
    //利用栈的数据结构来解决
    public static void main(String args[]) {
        //输入字符数组
        Scanner in = new Scanner(System.in);
        System.out.println("请输入轮数:");
        int N = in.nextInt();
        char[] c = new char[N];
        System.out.println("  输入数字C,D,+");
        for (int i = 0; i < N; i++) {
            c[i] = in.next().charAt(0);
        }

        //调用处理方法
        System.out.print(frogPoints(c, N));
    }

    private static int frogPoints(char[] c, int N) {
        //利用栈的结构存储上一轮的结果 (while循环也可以)
        Stack<Integer> stack = new Stack<>();
        for (char ch : c) {
            switch (ch) {
                case 'C': //字符单引号,数字直接写
                    stack.pop(); //退栈(清空上一轮比赛)
                    break;  //特别要注意break问题
                case 'D':
                    int i = stack.peek() * 2;//栈顶元素的二倍
                    stack.push(i);
                    break;
                case '+':
                    int j = stack.peek();//栈顶元素
                    int m = stack.pop();//出栈
                    int k = stack.peek();//栈顶元素
                    stack.push(m);  //又放回去
                    int sum = j + k;
                    stack.push(sum);
                    break;
                default:
                    int chh = (int) ch;
                    stack.push(chh);
                    break;
            }
        }
        int ss = 0;
        for (int i : stack) {
            ss += i;
        }
        return ss;
    }

}

猜你喜欢

转载自blog.csdn.net/qq_41033299/article/details/88808078