CCF 201903-2 二十四点 100分
Posted 登登登ccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF 201903-2 二十四点 100分相关的知识,希望对你有一定的参考价值。
用一个栈来存放数字,遍历字符串
若遇到数字则直接推入栈中
若遇到乘除符号则取出栈顶元素,然后将它与乘除符号做运算后的结果数字推入栈中
若遇到加减符号则将加减符号后的数字直接推入栈中(减号推入负数)
字符串遍历完成后,把栈中所有的数字累加到sum,判断sum是否等于24,输出Yes或No即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
for(int i=0; i<n; i++) {
stack<int> s;
string str;
cin>>str;
for(int j=0; j<7; j++) {
if(isdigit(str[j]))
s.push(str[j]-'0');
else if(str[j]=='x'||str[j]=='/') {
int t=s.top();
s.pop();
if(str[j]=='x')
s.push(t*(str[++j]-'0'));
if(str[j]=='/')
s.push(t/(str[++j]-'0'));
} else if(str[j]=='+' || str[j]=='-') {
if(str[j]=='+')
s.push(str[++j]-'0');
if(str[j]=='-')
s.push(-(str[++j]-'0'));
}
}
int sum=0;
while(!s.empty()) {
sum+=s.top();
s.pop();
}
cout<<(sum==24?"Yes":"No")<<endl;
}
return 0;
}
以上是关于CCF 201903-2 二十四点 100分的主要内容,如果未能解决你的问题,请参考以下文章