CCF计算机职业认证考试

2019-08-16 11:41:22来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

CCF计算机职业认证考试

201903-2 二十四点

      【题目背景】

      二十四点是一款著名的纸牌游戏,其游戏的目标是使用3个加减乘除运算使得4张纸牌上数字的运算结果为24。

      【题目描述】

      定义每一个游戏由4个从1-9的数字和3个四则运算符组成,保证四则运算符将数字两两隔开,不存在括号和其他字符,运算顺序按照四则运算顺序进行。其中加法用符号 + 表示,减法用符号  - 表示,乘法用小写字母 x 表示,除法用符号 /表示。在游戏里除法为整除,例如2/3=0,3/2=1,4/2=2
      老师给了你n个游戏的解,请你编写程序验证每个游戏的结果是否为24。

      【输入格式】

      从标准输入读入数据。
      第一行输入一个整数n,从第2行开始到第n+1行中,每一行包含一个长度为7的字符串,为上述的24点游戏,保证数据格式合法。

      【输出格式】

      输出到标准输出。
      包含n行,对于每-一个游戏,如果其结果为24则输出字符串Yes,否则输出字符串No。

      【样例1输入】

      10
      9+3+4x3    5+4x5x5    7-9-9+8    5x6/5x4    3+5+7+9    1x1+9-9      1x9-5/9      8/5+6x9      6x7-3x6      6x4+4/5

      【样例1输出】        Yes      No      No      Yes      Yes      No      No      No      Yes      Yes           【样例1解释】

 

      9+3+4x3=24    5+4x5x5=105    7-9-9+8=-3    5x6/5x4=24    3+5+7+9=24    1x1+9-9=1      1x9-5/9=9      8/5+6x9=55      6x7-3x6=24      6x4+4/5=24
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        while (n > 0) {
            String str = sc.nextLine();
            Stack<Integer> number = new Stack<>();
            char[] ch = str.toCharArray();
            int sum = 0;
            int i = 0;
            /*
             * for (char c : ch) { System.out.println(c); }
             */
            while (i < 7) {
                if (i == 0) {
                    number.push(ch[i] - '0');
                    i++;
                }else {
                    if (ch[i] == 'x') {
                        i++;
                        int left = number.pop();
                        number.push(left * (ch[i] - '0'));
                        i++;
                        //System.out.println("xxxxxxxx");
                    }else {
                        if (ch[i] == '/') {
                            i++;
                            int left = number.pop();
                            number.push(left / (ch[i] - '0'));
                            i++;
                            //System.out.println("///////////");
                        }else {
                            if (ch[i] == '-') {
                                i++;
                                number.push(-(ch[i] - '0'));
                                i++;
                               // System.out.println("--------------");
                            }else {
                                i++;
                                number.push(ch[i] - '0');
                                i++;
                             //   System.out.println("+++++++++++");
                            }
                        }
                    }
                }
            }
            sum = number.pop();
            //System.out.println(sum);
            while (!number.empty()) {
                int right = number.pop();
                sum += right;
             //   System.out.println(right);
               // System.out.println(sum);
            }
           // System.out.println(sum);
            if (sum == 24) {
                System.out.println("Yes");
            } else {
                System.out.println("No");
            }
            n--;
        }
    }
}

 


原文链接:https://www.cnblogs.com/weiji-yang/p/11285082.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Restful API 中的错误处理

下一篇:Dubbo从入门到实战:入门篇