题目描述:详细题目,请登录官网查看-网址
其实就是一个简易的计算器,只包括数字和加减乘除。
思路:
变量:使用了4个队列
que_int:用于存储给出的字符串中的数字
que_Opera:存储字符串中的操作符
que_Sec_Opera:过滤掉乘除后,只包含加减的操作符
queue<int> que_int:过滤掉乘除后,得到的数字
#include<cstdio>
#include<queue>
#include<iostream>
using namespace std;
int main() {
queue<int> que_Sec_int;
queue<char> que_Sec_Opera;
queue<int> que_int;
queue<char> que_Opera;
int n;
cin>>n;
string str;
for(int i = 0; i < n; i++) {
cin>>str;
for(int j = 0; j < 7; j++) {
if(j % 2 == 0) {
que_int.push(str[j] - '0');
}
else {
que_Opera.push(str[j]);
}
}
int outNum = que_int.front();
que_int.pop();
while(!que_int.empty()) {
if(que_Opera.front() == 'x') {
outNum *= que_int.front();
que_int.pop();
que_Opera.pop();
}
else if(que_Opera.front() == '/') {
outNum /= que_int.front();
que_int.pop();
que_Opera.pop();
}
else if(que_Opera.front() == '+') {
que_Sec_int.push(outNum);
outNum = que_int.front();
que_int.pop();
que_Sec_Opera.push('+');
que_Opera.pop();
}
else {
que_Sec_int.push(outNum);
outNum = que_int.front();
que_int.pop();
que_Sec_Opera.push('-');
que_Opera.pop();
}
}
que_Sec_int.push(outNum);
int result = que_Sec_int.front();
que_Sec_int.pop();
while(!que_Sec_int.empty()) {
char op = que_Sec_Opera.front();
que_Sec_Opera.pop();
if(op == '+') {
result += que_Sec_int.front();
}
else {
result -= que_Sec_int.front();
}
que_Sec_int.pop();
}
if(result == 24) {
cout<<"Yes";
}
else {
cout<<"No";
}
if(i != n - 1) {
cout<<endl;
}
}
return 0;
}