本文主要是介绍ccf2019-03-2 二十四点(栈实现表达式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
二十四点
栈的用法,开一个数的栈存储数字,开一个字符栈存储符号
先计算乘法和除法,在计算加法,可以把减法转换为加法减少代码量
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
char str[10];stack<int> num;
stack<char> sign;int main(){cin>>n;getchar();for(int i=0;i<n;i++){gets(str);while(!num.empty()) num.pop();while(!sign.empty()) sign.pop();int j=0;while(j<strlen(str)){if(str[j]>'0' && str[j]<='9'){num.push(str[j]-'0');}else{if(str[j]=='+'){sign.push('+');}else if(str[j]=='-'){num.push((str[j+1]-'0')*(-1));sign.push('+');j++;}else if(str[j]=='x'){int tem=num.top();num.pop();num.push(tem*(str[j+1]-'0'));j++;}else if(str[j]=='/'){int tem=num.top();num.pop();num.push(tem/(str[j+1]-'0'));j++;}}j++;}while(!sign.empty()){int rtem=num.top();num.pop();int ltem=num.top();num.pop();sign.pop();num.push(rtem+ltem);//cout<<"dasd"<<"\n";}int ans=num.top();//cout<<ans<<endl;if(ans==24){cout<<"Yes"<<"\n";}else cout<<"No"<<"\n";}return 0;
}
/*
10
9+3+4x3
*/
这篇关于ccf2019-03-2 二十四点(栈实现表达式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!