2017.5.6 表达式的值 思考记录
来源:互联网 发布:exe软件代码修改 编辑:程序博客网 时间:2024/06/06 02:11
这个题严重不符普及组的身份、、虽然是模拟,但如果想不清楚是很难入手的
首先判断哪个位置有数,肯定先找运算符、、
这是其实只用看这一个符号和上一个符号,害怕遗漏的话可以罗列一下:
(+ : +号前一定有数
)+ : +号前一定没有数
+ +: +号前一定有数
* +: +号前一定有数
所以只要+号前不是)就有数
而且要考虑运算符后面的,就需要对右括号进行同“+”的处理,不同的是这个右括号要一直推到左括号
用运算符优先级的方法建立两个栈处理运算::能放就放,如果+号前是*号就一直把*法做完、
码:
#include<iostream>#include<cstdio>using namespace std;int n,i,shucnt,fucnt;char ch[100006],fu[100006];struct oo{int yi,ling;}zhan[100006];int main(){scanf("%d",&n);for(i=1;i<=n;i++){scanf("%c",&ch[i]);while(ch[i]=='\n')scanf("%c",&ch[i]);}ch[0]='(';ch[++n]=')';for(i=0;i<=n;i++){if(ch[i]=='+'){if(ch[i-1]!=')'){ ++shucnt;zhan[shucnt].ling=1;zhan[shucnt].yi=1; }while(fu[fucnt]=='*'){--fucnt;--shucnt;int linling=(zhan[shucnt].yi*zhan[shucnt+1].ling+zhan[shucnt].ling*zhan[shucnt+1].yi+zhan[shucnt].ling*zhan[shucnt+1].ling)%10007;int linyi=(zhan[shucnt].yi*zhan[shucnt+1].yi)%10007;zhan[shucnt].yi=linyi;zhan[shucnt].ling=linling;}++fucnt;fu[fucnt]='+';}if(ch[i]=='*'){++fucnt;fu[fucnt]='*';if(ch[i-1]!=')'){++shucnt;zhan[shucnt].ling=1;zhan[shucnt].yi=1;}}if(ch[i]==')'){if(ch[i-1]!=')'){++shucnt;zhan[shucnt].ling=1;zhan[shucnt].yi=1;}while(fu[fucnt]!='('){int linling;int linyi;if(fu[fucnt]=='+'){ shucnt--; linling=(zhan[shucnt].ling*zhan[shucnt+1].ling)%10007; linyi=(zhan[shucnt].ling*zhan[shucnt+1].yi+zhan[shucnt].yi*zhan[shucnt+1].ling+zhan[shucnt+1].yi*zhan[shucnt].yi)%10007;zhan[shucnt].ling=linling;zhan[shucnt].yi=linyi;}else { shucnt--; linling=(zhan[shucnt].ling*zhan[shucnt+1].yi+zhan[shucnt].yi*zhan[shucnt+1].ling+zhan[shucnt+1].ling*zhan[shucnt].ling)%10007; linyi=(zhan[shucnt].yi*zhan[shucnt+1].yi)%10007;zhan[shucnt].ling=linling;zhan[shucnt].yi=linyi; }fucnt--;}fucnt--;}if(ch[i]=='(')++fucnt,fu[fucnt]='(';}printf("%d",zhan[shucnt].ling%10007);}
0 0
- 2017.5.6 表达式的值 思考记录
- 2017.5.6 联合权值 思考记录
- 2017.5.5 小朋友的数字 思考记录
- 2017.5.6 子矩阵 思考记录
- 关于对记录的思考
- 关于记录日志的思考
- 一次关于思考的记录
- 正则表达式思考+的作用
- 2017.5.12 校门外的区间 思考记录
- 2017.6.6 数表 思考记录
- 2017.9.6 礼物 思考记录
- 2017.9.6 外星人 思考记录
- 2017.10.6 单词 思考记录
- 公车站的一次思考记录
- 天天记录 - Andorid Invalidate 引发的思考
- PHP字符串处理的思考与记录
- 2017.4.5 假期的宿舍 思考记录
- 实习面试的一个记录及思考
- 框架之Struts2篇----day4.1(事件驱动和模型驱动)
- Eclipse error "build.properties does not exist" 问题解决
- Mysql 设置约束
- Bomb Catcher
- 对html+css+js网站加载速度优化(虚拟主机)
- 2017.5.6 表达式的值 思考记录
- 应届生面试注意技巧
- MySQL入门实践(二)
- Hibernate第四篇【集合映射、一对多和多对一】
- 最怀情况下的时间复杂度
- JQuery中常用的AJAX方法
- h5day1
- 随机森林特点
- Reverse Integer