视频解析: SCUACM每日一题#21 二十四点_哔哩哔哩_bilibili
因为*/的优先级比+-高,所以我们先算*/
#include<bits/stdc++.h>
using namespace std;
queue<int> num;
queue<char>op;
int main()
{
int n;cin>>n;
while(n--)
{
string s;cin>>s;
s+='+'; //手动添加最后一个操作符
int ans=0,now=0;
for(int i=0;i<s.size();i++)
{
char c=s[i];
if(c=='x')now*=s[++i]-'0';
else if(c=='/')now/=s[++i]-'0';
else if(c>='0'&&c<='9')now=c-'0';
else
{
num.push(now); //num存储运算数
op.push(c); //op存储运算符
}
}
num.push(0); //第一位运算数和0进行运算,对结果没有影响
ans=num.front(); //取出第一位运算数
num.pop(); //弹出第一位运算数
//把所有+-运算符全部用完
while(op.size())
{
char c=op.front(); //取出第一位+-运算符
op.pop(); //弹出第一位+-运算符
if(c=='+')ans+=num.front();
else ans-=num.front();
num.pop(); //弹出当前运算数
}
if(ans==24)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}