博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj305 表达式求值
阅读量:6567 次
发布时间:2019-06-24

本文共 1361 字,大约阅读时间需要 4 分钟。

1 #include
2 char s[301],cstack[120]; 3 int dstack[80]; 4 int i,ctop,dtop; 5 int Operate(int a,char theta,int b) 6 { 7 switch(theta){ 8 case 'd': return a+b; 9 case 'n': return a>b?b:a;10 case 'x': return a>b?a:b;11 }12 }13 int EvaluateExpression()14 {15 char theta;16 int a,b,k;17 do{ 18 if(s[i]>'9'||s[i]<'0'){19 if(s[i]=='a'||s[i]=='m') i+=2;20 if(s[i]==')'){21 --ctop;22 theta=cstack[--ctop];23 a=dstack[--dtop];24 b=dstack[--dtop];25 dstack[dtop++]=Operate(a,theta,b);26 }else if(s[i]!=',') cstack[ctop++]=s[i];27 ++i;28 }29 while(s[i]<='9'&&s[i]>='0'){30 for(k=0;s[i]!=','&&s[i]!=')'&&s[i]<='9'&&s[i]>='0';++i)31 k=10*k+s[i]-'0';32 dstack[dtop++]=k;33 if(s[i]==',') ++i;34 }35 }while(ctop);36 return dstack[0];37 }38 int main()39 {40 int N;41 scanf("%d",&N);42 while(N--){43 i=ctop=dtop=0;44 scanf("%s",s);45 printf("%d\n",EvaluateExpression());46 }47 return 0;48 }49 50

纠结了半天,还好最终AC了,但是还有一点不明白,就是30行的限制数字的那个条件,我感觉不要也行,但提交总是WA,加上之后就AC了,为什么啊?求大神指点!!!

转载于:https://www.cnblogs.com/shihuajie/archive/2012/08/03/2621412.html

你可能感兴趣的文章
oracle数据库远程不落地导入本地数据库
查看>>
dns相关内容
查看>>
JavaScript骚操作
查看>>
MySQL的主从复制与读写分离原理
查看>>
luaCPU性能测试
查看>>
mysql优化
查看>>
【批处理】for循环中产生不同的随机数
查看>>
Gradle -help
查看>>
/etc/security/limits.conf
查看>>
js 框架
查看>>
android 实现ListView中添加RaidoButton单选
查看>>
Oracle数据库:启动操作
查看>>
linux下的防火墙
查看>>
SNAT与DNAT
查看>>
Linux 修改密码“ Authentication token manipulation err”
查看>>
openstack
查看>>
Lync Server 2013 安装体验(一)
查看>>
EBB-24、DNS2
查看>>
css3做的nav
查看>>
汇编笔记
查看>>