二十四点
#include <iostream>
#include <stack>
using namespace std;
int operate(stack<int>& num, stack<char>& sym);
nt main()
{
int n;
cin >> n;
while (n--)
{
string s;
cin >> s;
stack<int> num;
stack<char> sym;
int result = 0;
for (int i = 0; i < s.size(); i++)
{
if (isdigit(s[i]))
{
num.push(s[i] - '0');
continue;
}
else
{
if (sym.empty() || ((s[i] == 'x' || s[i] == '/')
&& (sym.top() == '+' || sym.top() == '-')))
{
sym.push(s[i]);
continue;
}
else if (s[i] == '+' || s[i] == '-')
{
result = operate(num, sym);
num.push(result);
sym.push(s[i]);
}
else if ((s[i] == 'x' || s[i] == '/')
&& (sym.top() == 'x' || sym.top() == '/'))
{
result = operate(num, sym);
num.push(result);
sym.push(s[i]);
continue;
}
}
}
while (!sym.empty())
{
result = operate(num, sym);
num.push(result);
}
if (result == 24)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
int operate(stack<int>& num, stack<char>& sym)
{
int n1 = num.top();
num.pop();
int n2 = num.top();
num.pop();
char c = sym.top();
sym.pop();
switch(c)
{
case '+': return n2 + n1;
case '-': return n2 - n1;
case 'x': return n2 * n1;
case '/': return n2 / n1;
}
}
```