思路:利用栈来进行计算。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
stack<int>s1;
stack<char>s2;
int n;
char a[7];
int x1,sum;
int main()
{
cin>>n;
while(n--)
{
memset(a,0,sizeof(a));
sum=0;
while(!s1.empty())
{
s1.pop();
}
while(!s2.empty())
{
s2.pop();
}
cin>>a;
for(int i=0;i<7;i++)
{
if((i%2)==0)
{
s1.push(a[i]-'0');
}
else
{
if((a[i]=='+')||(a[i]=='-'))
{
s2.push(a[i]);
}
else if(a[i]=='x')
{
x1=s1.top();
s1.pop();
s1.push(x1*(a[i+1]-'0'));
i++;
}
else
{
x1=s1.top();
s1.pop();
s1.push(x1/(a[i+1]-'0'));
i++;
}
}
}
while(!s2.empty())
{
x1=s1.top();
s1.pop();
if(s2.top()=='+')
{
sum=sum+x1;
}
else if(s2.top()=='-')
{
sum=sum-x1;
}
s2.pop();
}
sum+=s1.top();
if(sum==24)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}