
思路:利用栈来进行计算。
代码:
#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;
}
本文介绍了一种使用栈来解析并计算类似算术表达式的算法实现。通过输入一个特定格式的字符串,该算法能正确处理加减乘除运算,并判断最终结果是否等于24。涉及的主要步骤包括初始化栈、解析输入字符串、执行相应的数学操作等。

205

被折叠的 条评论
为什么被折叠?



