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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM