【codevs 2178】表达式运算Cuties
来源:互联网 发布:深圳岂凡网络 林秋敏 编辑:程序博客网 时间:2024/06/04 01:36
一下午的成果???
//遇到优先级小于栈顶时计算#include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<stack>#include<cstring>#define ll long longusing namespace std;stack<ll>num;stack<char>f;ll len;string a,b,c;ll k[100];void cal()//无脑的计算 { char b[1]; b[0]= f.top(); f.pop(); ll y=num.top();num.pop();//x y<-----顺序 ll x=num.top();num.pop(); if(b[0]=='+') { num.push(x+y); } else if(b[0]=='-') { num.push(x-y); } else if(b[0]=='*') { num.push(x*y); } else if(b[0]=='/') { num.push(x/y); } else if(b[0]=='^') { ll ret=1; while(y--) { ret*=x; } num.push(ret); }}int main(){ k['+']=k['-']=1; k['*']=k['/']=2; k['^']=3; a="("; cin>>b; a+=b; c=")"; a+=c;//前后加上括号方便运算 // cout<<a<<'\n'; ll numb=0,fu=1;//当前要压进栈的数字以及数字的正负 len=a.length(); for(ll i=0;i<len;i++)//枚举字符 { if(a[i]=='-'&&a[i-1]=='(') fu=-1;//该数字是负数 else if(a[i]<='9'&&a[i]>='0') //记录数字的过程 { numb*=10; numb+=a[i]-'0'; } else { if(i-1>=0&&a[i-1]<='9'&&a[i-1]>='0')//遇到运算符或者括号就把记录的数字压进栈 { num.push(numb*fu); fu=1; numb=0; } if(a[i]==')' ) { while(!f.empty()&&f.top()!='(')//遇见右括号就一直向左运算到左括号 cal(); if(!f.empty()&&f.top()=='(') f.pop();//弹掉左括号 } else if(!f.empty()&&k[a[i]]<=k[f.top()]&&a[i]!='(')//如果当前运算符小于上一个运算符 那就先计算上一个运算符 { while(!f.empty()&&k[a[i]]<=k[f.top()]&&a[i]!='(') cal(); f.push(a[i]);//再把当前运算符压入符号栈 } else f.push(a[i]); } } printf("%lld\n",num.top());}
阅读全文
0 0
- CODEVS 2178 表达式运算Cuties
- 【codevs 2178】表达式运算Cuties
- 2178 表达式运算Cuties
- codevs2178 表达式运算Cuties
- codevs 2178(中缀表达式求值)
- Codevs 取余运算
- CODEVS 1497取余运算
- CODEVS 1497 取余运算
- codevs 3066 中缀表达式转后缀表达式
- 表达式运算
- 表达式运算
- [Codevs 1107][NOIP 1107]等价表达式
- codevs 2471 表达式的转换--二叉树
- 等价表达式 (codevs 1107)题解
- CodeVS 1107 等价表达式【NOIP2005】【模拟
- Codevs
- 表达式和运算符
- 数据类型、运算符、表达式
- Python3 urllib库爬虫 基础
- go-ethereum 搭建本地测试私有链
- 在Linux下安装Node.js
- MYSQL一次千万级连表查询优化(一)
- python 通过pyhs2进行hql,报错
- 【codevs 2178】表达式运算Cuties
- thinkphp ajax无刷新分页类及实例
- kafka和spark集成启动报错java.lang.NoClassDefFoundError:org/apache/zookeeper/Watcher
- Python中函数定义及基本操作
- jquery中的数组过滤筛选-$.grep()
- 【Hadoop】提交任务时 java.net.ConnectException: 拒绝连接
- [DP] Codeforces #623B. Array GCD
- QQ空间相册密码破解2018-破解QQ空间访问权限2018
- P4,C开发笔试题三道