一、题目描述
二、代码实现
#include<iostream>
#include<vector>
#include<string>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
string str;
cin>>str;
//存放数字
vector<int> num;
//存放运算符
vector<char> op;
//把表达式里面的数字和运算符分开存放
for(int j=0;j<str.length();j++)
{
if(str[j]>='0' && str[j]<='9') num.push_back(str[j]-'0');
else op.push_back(str[j]);
}
int j = 0;
//乘法和除法优先级最高,先处理乘法和除法
while(j < op.size())
{
if(op[j]=='x')
{
num[j] = num[j] * num[j+1];
//乘完之后要把多余元素删除
//例如
//num:9 3 4 3
//op:+ + x
//进行完乘法运算之后应该变成下面这样
//num:9 3 12 (3被删除)
//op:+ + (x被删除)
num.erase(num.begin() + j + 1);
op.erase(op.begin() + j);
j = -1;
}
if(op[j]=='/')
{
num[j] = num[j] / num[j+1];
num.erase(num.begin() + j + 1);
op.erase(op.begin() + j);
j = -1;
}
j++;
}
j = 0;
//处理加法和减法
while(j < op.size())
{
if(op[j]=='+')
{
num[j] = num[j] + num[j+1];
num.erase(num.begin() + j + 1);
op.erase(op.begin() + j);
j = -1;
}
if(op[j]=='-')
{
num[j] = num[j] - num[j+1];
num.erase(num.begin() + j + 1);
op.erase(op.begin() + j);
j = -1;
}
j++;
}
if(num[0]==24) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}