Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14833 Accepted Submission(s): 5050
1 + 2 4 + 2 * 5 - 7 / 11 0
3.00 13.36
只用堆棧即可,c代碼如下:
#include#include double a[210]; int main() { int i,sign,count,j; double sum; char c; while(1) { sign=1;i=0; memset(a,0,sizeof(a)); scanf(%lf,&a[0]); while(getchar()!=' ') { sign=0; scanf(%c %d,&c,&count); if(c=='+') a[++i]=count; else if(c=='-') a[++i]=-count; else if(c=='*') a[i]=a[i]*count; else if(c=='/') a[i]=a[i]/(count*(1.0)); } if(sign) break; sum=0; for(j=0;j<=i;j++) sum+=a[j]; printf(%0.2lf ,sum); } return 0; }
c++ STL——stack解法:
#include#include using namespace std; int main() { int i,sign,j; double sum,num; char c; while(1) { sign=1; stack count; scanf(%lf,&num); count.push(num); while(getchar()!=' ') { sign=0; scanf(%c %lf,&c,&num); if(c=='+') count.push(num); else if(c=='-') count.push(-num); else if(c=='*') { double x=count.top(); x=x*num; count.pop(); count.push(x); } else { double x=count.top(); x=x/num; count.pop(); count.push(x); } } if(sign) break; sum=0; while(!count.empty()) { sum+=count.top(); count.pop(); } printf(%.2lf ,sum); } return 0; }