两种代码实现方式:
1.使用C++deque实现
#include<iostream>
#include<deque>
using namespace std;
int main() {
int n;
string str;
cin >> n;
while(n--){
deque<char> ops;
deque<int> nums;
cin >> str;
for (int i = 0; i < str.length(); i++) {
char c = str[i];
if (c <= '9' && c >= '0') {
if (!ops.empty() && (ops.back() == 'x' || ops.back() == '/')) {
char op = ops.back(); ops.pop_back();
int num = nums.back(); nums.pop_back();
if (op == 'x') nums.push_back(num * (c - '0'));
else nums.push_back(num / (c - '0'));
}
else nums.push_back(c - '0');
}
else ops.push_back(c);
}
while (ops.size()) {
int a = nums.front(); nums.pop_front();
char op = ops.front(); ops.pop_front();
int b = nums.front(); nums.pop_front();
if (op == '-') nums.push_front(a - b);
if (op == '+') nums.push_front(a + b);
}
if (nums.front() == 24) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
2. 使用eval函数实现
n = int(input())
while n != 0:
n -= 1
input_str = input()
input_str = input_str.replace("x", "*")
input_str = input_str.replace("/", "//")
num = int(eval(input_str))
if num == 24:
print("Yes")
else:
print("No")
使用eval函数大大降低了难度,但由于eval函数权限过大,开发项目时不建议滥用