1. 程式人生 > >P1449 後綴表達式

P1449 後綴表達式

描述 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 namespace
std; 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 後綴表達式