1005. 字尾表示式計算
total:
316accepted:85
time limit: 1sec memory limit:256mb
description
來自usa的mr.allison是某班的英語老師,學期開始之前他要求自己班的同學閱讀一本英文**,並寫乙份50000字的讀書報告。該班的同學很苦惱,並想方設法讓mr.allison放棄讀書筆記這個念頭,於是該班的大牛pyy想到乙個藉口:看那麼多份讀書筆記會花費很多時間的!把這個理由告訴mr.allison之後,mr.allison也覺得挺有道理,但一共要閱讀多少文字呢?於是pyy就給出一條字尾表示式,並告訴mr.allison說,這條表示式的結果就是您要閱讀的文字。mr.allison的數學不咋地,於是就找你來幫他計算這條字尾表示式的值。
input
第一行是一整數,即測試樣例個數t.
以下t行,每一行是乙個長度不超過100的字串,代表一條字尾表示式。表示式中只含有+、-、*、/四種運算子和26個小寫英文本母,不含其它字元。每乙個英文本母代表乙個正整數:
a = 1,b = 2,c = 3...y = 25,z = 26。
output
每乙個輸入樣例,單獨一行輸出結果:字尾表示式的值,乙個正實數s,保留兩位小數。
sample input
2sample outputab+c*
int**py++
9.002561.00
#include#include#include#include#includeusing namespace std;
int main() else else if (str[i]== '-') else if (str[i]== '*') else if (str[i]== '/')
s.push(temp);}}
double a = s.top();
a =floor(a*100.0)/100.0;
cout.precision(2); //輸出小數點後兩位
cout<
建立乙個棧s 。從左到右讀表示式,如果讀到運算元就將它壓入棧s中,如果讀到n元運算子(即需要引數個數為n的運算子)則取出由棧頂向下的n項按操作符運算,再將運算的結果代替原棧頂的n項,壓入棧s中 。如果字尾表示式未讀完,則重複上面過程,最後輸出棧頂的數值則為結束。
1005 字尾表示式計算
description 來自usa的mr.allison是某班的英語老師,學期開始之前他要求自己班的同學閱讀一本英文 並寫乙份50000字的讀書報告。該班的同學很苦惱,並想方設法讓mr.allison放棄讀書筆記這個念頭,於是該班的大牛pyy想到乙個藉口 看那麼多份讀書筆記會花費很多時間的!把這個理...
字尾表示式計算
演算法 1.遍歷字尾表示式中的數字和符號 對於數字 進棧 對於符號 從棧中彈出右運算元 從棧中彈出左運算元 根據符號進行運算 將運算結果壓入棧中 2.遍歷結束 棧中的唯一數字為計算結果 include include linkstack.h int isnumber char c int isope...
字尾表示式計算
將中綴表示式轉換為字尾表示式 與轉換為字首表示式相似,遵循以下步驟 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從左至右掃瞄中綴表示式 3 遇到運算元時,將其壓入s2 4 遇到運算子時,比較其與s1棧頂運算子的優先順序 4 1 如果s1為空,或棧頂運算子為左括號 則直接將此運算子入棧 ...