題目描述
小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,
門上有乙個算式,其中只有( )
,0 ~ 9
,+ - * / ^
,求出的值就是密碼。
小明數學學得不好,還需你幫他的忙。(/
用整數除法)
輸入格式
共 1 行,為乙個算式。
輸出格式
共 1 行,就是密碼。
輸入樣例
1+(3+2)(7^2+69)/(2)
輸出樣例
258題解
stack:
解題步驟
:
如果是數字:直接壓入數字棧
中;
如果是(
:直接壓入字元棧
中;
如果是)
:就將括號內的表示式計算完;
如果是運算子:若當前運算子的優先順序 ≤ 前乙個運算子的優先順序,那麼就計算前面的,再將當前運算子加入字元棧
中;
特殊情況
:
減號
:如1 - 2 + 3
,此時無需特殊處理;
負號
:如-1 - 2 + 3
和(1 + 2) * (-3 + 4)
,此時應該把-1
和-3
加入數字棧
中;
#include
#include
#include
#include
using
namespace std;
stack<
int> num;
stack<
char
> op;
map<
char
,int
> hash;
void
cal(
)int
main()
else
if(s[i]
=='('
)else
if(s[i]
==')'
)else
else op.
push
(s[i]);
}}while
(op.
size()
)cal()
; cout << num.
top(
)<< endl;
return0;
}
ps:
很多題解都沒考慮到負數的情況也過了?
為啥用getline
提交就會執行錯誤,害得我找了好久的錯?
資訊學奧賽一本通1356 計算 calc (棧)
時間限制 1000 ms 記憶體限制 65536 kb 提交數 5797 通過數 2252小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9 求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 共1行,為乙個算式。共1行...
均值(資訊學奧賽一本通 T1060)
題目描述 給出一組樣本資料,包含n個浮點數,計算其均值,精確到小數點後4位。輸入 輸入有兩行,第一行包含乙個整數n n小於100 代表樣本容量 第二行包含n個絕對值不超過1000的浮點數,代表各個樣本資料。輸出 輸出一行,包含乙個浮點數,表示均值,精確到小數點後4位。輸入樣例 21.0 3.0 輸出...
計算郵資(資訊學奧賽一本通 T1052)
題目描述 根據郵件的重量和使用者是否選擇加急計算郵費。計算規則 重量在1000克以內 包括1000克 基本費8元。超過1000克的部分,每500克加收超重費4元,不足500克部分按500克計算 如果使用者選擇加急,多收5元。輸入 輸入一行,包含整數和乙個字元,以乙個空格分開,分別表示重量 單位為克 ...