import java.util.Scanner;
import java.util.Stack;
public class Main {
public static int priority(char c) { // 0最高 1最小
if(c=='+' || c=='-') return 1;
else return 0;
}
public static int Callate(String formula) {
//给出一个式子 计算这个式子的最后结果
//建立一个操作符栈
Stack CaoZuoFu = new Stack<>();
//建立一个操作数栈
Stack CaoZuoShu = new Stack<>();
for(int i=0;i<7;i++) {
char c = formula.charAt(i);
if(Character.isDigit(c)) CaoZuoShu.push(Character.getNumericValue(c));
else {
if(priority(c)==1) CaoZuoFu.push(c);
else {
int temp= (int) CaoZuoShu.pop();
int temp1 = Character.getNumericValue(formula.charAt(++i));
if(c=='x') CaoZuoShu.push(temp*temp1);
else CaoZuoShu.push(temp/temp1);
}
}
}
//开始进行整个式子的操作 这时操作符栈里只有+-
//大概两个栈都需要倒置一下....
Stack CaoZuoFu1 = new Stack<>();
Stack CaoZuoShu1 = new Stack<>();
while(!CaoZuoFu.empty()) CaoZuoFu1.push((CaoZuoFu).pop());
while(!CaoZuoShu.empty()) CaoZuoShu1.push((CaoZuoShu).pop());
while(!CaoZuoFu1.empty()) {
int temp = (int) CaoZuoShu1.pop();
int temp1 = (int) CaoZuoShu1.pop();
char c = (char)CaoZuoFu1.pop();
if(c=='+') CaoZuoShu1.push(temp+temp1);
else CaoZuoShu1.push(temp-temp1);
}
return (int)CaoZuoShu1.pop();
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int num = Integer.parseInt(s.nextLine());
String[] str = new String[num];
for(int i=0;i<num;i++) {
str[i]=s.nextLine();
}
for(int i=0;i<num;i++) {
if(Callate(str[i])==24) System.out.println("Yes");
else System.out.println("No");
}
}
}
CCF-CSP 201903-2 二十四点
最新推荐文章于 2022-09-13 11:35:19 发布