pat 表达式转换
来源:互联网 发布:猜你喜欢 人工智能 编辑:程序博客网 时间:2024/06/05 10:19
好多细节多找点数据输入输出看看自己哪里有不足就行了吧
#include<bits/stdc++.h>using namespace std;string str;int flag=1;int f=1;bool op(int i,char c){if(str[i-1]>'9'||str[i-1]<'0'&&(str[i-1]!=')'))return 0;if(c=='+'||c=='-'||c=='*'||c=='/')return true;return false;}bool out(int i,char c){if(c>='0'&&c<='9')return 1;if(c=='.')return 1;if(c=='-'){ if(i==0) return 1; else if(str[i-1]>='0'&&str[i-1]<='9'||str[i-1]==')') return 0; return 1; } return 0;}map<char,int > m;void solve(int l,int r){stack<char> s;for(int i=l;i<=r;i++){if(out(i,str[i])){if(flag==1||f){ flag=0; f=1; cout<<str[i]; }else{ f=1; cout<<' '<<str[i]; } }else if(op(i,str[i])){f=0;if(!s.empty()){ while(m[str[i]]<=m[s.top()]) { cout<<' '<<s.top(); f=0; s.pop(); if(s.empty()) break; } } s.push(str[i]);}else if(str[i]=='('){stack<char> q; int j=i+1;q.push('(');while(!q.empty()){if(str[j]==')')q.pop();else if(str[j]=='(')q.push('(');j++;}solve(i+1,j-2);i=j-1;}}while(!s.empty()){f=0;cout<<' '<<s.top();s.pop();}}int main(){m['+']=1;m['-']=1;m['*']=2;m['/']=2;cin>>str;solve(0,str.length());}
0 0
- 表达式转换【PAT】
- PAT 表达式转换
- pat 表达式转换
- PAT表达式转换
- pat Data_stucture 表达式转换-栈的应用
- PAT DS 3-06 表达式转换
- 浙大PAT 3-06. 表达式转换 (解题思路)
- 进制转换[PAT]
- 表达式转换
- 表达式转换
- pat:1022<进制转换>
- 后缀表达式转换表达式树
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- linux初学者周周感悟--3
- PCA和SVD区别和联系
- JDBC连接数据库的七个步骤
- 数据结构学习笔记(1)
- linux下的du命令
- pat 表达式转换
- mui开箱即用超原生体验的框架
- 各种编码是什么东西?(iso-8859-1 、gbk、gb2312、UniCode、ASCII、URL、URI)
- Javascript:apply()和call()方法深入理解
- 获取流域每隔1小时累计平均降雨量
- 图片裁剪
- CSS3中弹性盒子Flex使用
- redis初识
- 单元测试、集成测试、系统测试的侧重点是什么?