前言:一道典型的stack(棧)的應用題,思路簡單,但是比較考驗編碼能力(有很多編碼細節,一不注意,你就沒了qaq)
ps:杭電也有這樣的題,長得幾乎一模一樣,但是不知道為什麼杭電上ac的**codeup上這道題就是過不了,大霧???(stack做出後,在看其他解法的時候發現的)
題目簡述:
計算表示式中只含有+、-、×、/,計算給出的表示式的值,保留小數點後兩位輸出。
輸入中含有數字、空格、計算符、回車。
當一行輸入中只含0時,輸入結束。
解題思路:
遇到這種表示式求值的題,一般就是將中綴表示式轉換為字尾表示式,然後用兩個stack分別儲存運算子和數字,根據計算符的優先順序進行彈出運算。
注意:大多數題目中還是會涉及到括號的情況,只不過這道題難度降了(我依舊編了很久很久)。如果有括號,則還要判斷括號的優先順序!
**code:
#include using namespace std;
stackop; //存運算子
stacknum; //存數字
char s[10001];
inline int check(char ops)
int main()
}else if(op.empty()||check(s[i])>check(op.top()))
else
} printf("%.2lf\n",num.top());
} return 0;
}
後序:
網上很多人是用兩個queue或者乙個queue+stack做的,在此就不多贅述了。
提供乙個用兩個queue做的題解,宣傳一下qwq:
簡單計算器
unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,buttons,math math是數 算單元 type tform1 class ...
簡單計算器
a 簡單計算器 crawling in process.crawling failed time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 讀入乙個只包含 的非負整數計算表示...
簡單計算器
問題描述 乙個最簡單的計算器,支援 四種運算。僅需考慮輸入輸出為整數的情況,資料和運算結果不會超過int表示的範圍。輸入 輸入只有一行,共有三個引數,其中第1 2個引數為整數,第3個引數為操作符 輸出 輸出只有一行,乙個整數,為運算結果。然而 1.如果出現除數為0的情況,則輸出 divided by...