AC代码: #include<iostream> #include<string.h> #include<stdio.h> #include<math.h> using namespace std; char str[301]; char **opera=new char *[301]; int value[301]; int t1=0,t2=0; void p1(char s[]) { opera[t1]=new char[strlen(s)+1]; strcpy(opera[t1++],s); } char *pop1() { return opera[--t1]; } void p2(int x) { value[t2++]=x; } int pop2() { return value[--t2]; } int add(int a,int b) { return a+b; } int max(int a,int b) { return a>b?a:b; } int min(int a,int b) { return a<b?a:b; } char s[5]; inline void copy(char s1[],int pos) { int i,j; for(i=pos,j=0;j<3&&s1[i];i++,j++) s[j]=s1[i]; s[j]='/0'; } inline int trans(char s[]) { int sum=0; int i,l=strlen(s); l--; for(i=0;s[i];i++) sum+=(s[i]-'0')*(int)pow(10,l--); return sum; } int main() { int n,i,j; char s1[6]; scanf("%d",&n); while(n--){ t1=t2=0; scanf("%s*c",str); j=0; for(i=0;str[i];i++){ if(str[i]=='(') ; else if(str[i]>='a'&&str[i]<='z'){ copy(str,i); i+=3; p1(s); } else if(str[i]>='0'&&str[i]<='9'){ int t=0; for(;str[i]&&str[i]>='0'&&str[i]<='9';i++) s1[t++]=str[i]; s1[t]='/0'; p2(trans(s1)); i--; } else if(str[i]==','){ ; } else if(str[i]==')'){ int a=pop2(); int b=pop2(); char ss[5]; strcpy(ss,pop1()); if(strcmp(ss,"max")==0){ int x=max(a,b); p2(x); } else if(strcmp(ss,"min")==0){ int x=min(a,b); p2(x); } else if(strcmp(ss,"add")==0){ int x=add(a,b); p2(x); } } } printf("%d/n",value[0]); } return 0; }