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
二十四點是一款著名的紙牌游戲,其游戲的目標是使用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輸出】
【樣例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--; } } }