读完题,感觉还是用栈来做最好
于是,去学习了一下栈的应用
感谢https://www.cnblogs.com/ellen-mylife/p/11110127.html
#include<stack> //头文件
stack <int> num; //定义一个int型栈
num.push(); //在栈顶上堆进一个元素
num.pop(); //删除掉栈顶上的元素
num.top(); //返回栈顶的元素,并不会删除
num.empty(); //返回栈是否为空
num.size(); //返回当前栈中元素的个数
#include<iostream>
#include<stack>
using namespace std;
stack<int> num;
stack<char> sign;
char str[8];
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
gets(str);
while(!num.empty()) num.pop();
while(!sign.empty()) sign.pop();
for(int j=0;j<sizeof(str);j++)
{
if(str[j]>'0'&&str[j]<='9')
{
num.push(str[j]-'0');
}
else if(str[j]=='+')
{
sign.push('+');
}
else if(str[j]=='-')
{
j++;
num.push((-1)*(str[j]-'0'));
sign.push('+');
}
else if(str[j]=='x')
{
int q=num.top();
num.pop();
j++;
int p=str[j]-'0';
num.push(q*p);
}
else if(str[j]=='/')
{
int q=num.top();
num.pop();
j++;
int p=str[j]-'0';
num.push(q/p);
}
}
while(!sign.empty())
{
int q=num.top();
num.pop();
int p=num.top();
num.pop();
sign.pop();
num.push(q+p);
}
if(num.top()==24) printf("Yes\n");
else printf("No\n");
}
return 0;
}