1 #include2 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了,为什么啊?求大神指点!!!