P1449 後綴表達式
阿新 • • 發佈:2018-07-01
描述 ati 結束 () namespace AR std 重新 後綴
題目鏈接
題目描述
所謂後綴表達式是指這樣的一個表達式:式中不再引用括號,運算符號放在兩個運算對象之後,所有計算按運算符號出現的順序,嚴格地由左而右新進行(不用考慮運算符的優先級)。
如:3*(5–2)+7對應的後綴表達式為:3.5.2.-*7.+@。’@’為表達式的結束符號。‘.’為操作數的結束符號。
輸入輸出格式
輸入格式:
輸入:後綴表達式
輸出格式:
輸出:表達式的值
輸入輸出樣例
輸入樣例#1: 復制
3.5.2.-*7.+@輸出樣例#1: 復制
16
說明
字符串長度,1000內。
已慢慢找回狀態。。。
這些題,,,剛開始還是想不出來
到底怎麽碼。
都是看了思路之後,,,才明白。
感覺這種都算是思路題吧。
還是基本入棧出棧+字符串。
ac代碼:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 using namespacestd; 7 8 char c; 9 long long a[1002],now,i; 10 11 int main() 12 { 13 while((c=getchar())!=‘@‘) //記住這種輸入方法。 14 { 15 if(c>=48&&c<=57) //如果是數字的話。 16 { 17 now*=10; //因為可能是十位數,,百位數。。。 18 now+=c-48; 19 }20 else if(c==‘.‘) 21 { 22 a[++i]=now; //a數組存儲那些被分隔開的數字。 23 now=0; 24 } 25 else if(c==‘+‘) 26 { 27 a[i-1]=a[i-1]+a[i]; //執行運算操作,重新更新 28 i--; //出棧,走掉。 29 } 30 else if(c==‘-‘) 31 { 32 a[i-1]=a[i-1]-a[i]; 33 i--; 34 } 35 else if(c==‘*‘) 36 { 37 a[i-1]=a[i-1]*a[i]; 38 i--; 39 } 40 else if(c==‘/‘) 41 { 42 a[i-1]=a[i-1]/a[i]; 43 i--; 44 } 45 } 46 printf("%lld",a[1]); //都走掉,最後剩1. 47 return 0; 48 }
如果你不開心,那我就把右邊這個帥傻子分享給你吧,
你看,他這麽好看,跟個zz一樣看著你,你還傷心嗎?
真的!這照片盯上他五秒鐘就想笑了。
一切都會過去的。
時間時間會給你答案2333
P1449 後綴表達式