資訊學奧賽一本通1356 計算 calc (棧)

2021-10-18 03:41:06 字數 1553 閱讀 3731

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 5797     通過數: 2252小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有「(」,「)」,「0-9」,「+」,「-」,「*」,「/」,「^」,求出的值就是密碼。小明數學學得不好,還需你幫他的忙。(「/」用整數除法)

共1行,為乙個算式。

共1行,就是密碼。

1+(3+2)*(7^2+6*9)/(2)
258
提交 

統計資訊 

提交記錄

教學備忘錄:編輯無無

中綴轉字尾、計算字尾表示式

#include #include #include #include #include using namespace std;

stack digit; // 數字棧

stack symbol; // 符號棧

int level(char c)

void calculation()

int main()

else

if (str[i] == '(')

if (str[i] == ')')

symbol.pop();

continue;

}while (!symbol.empty() && level(symbol.top()) >= level(str[i]))

symbol.push(str[i]); // 優先順序高的符號入棧

} }if (tag)

while (!symbol.empty())

cout << digit.top() << endl; // digit棧中只有乙個元素 即為表示式的結果

return 0;

}

無注釋:

#include #include #include #include #include using namespace std;

stack digit;

stack symbol;

int level(char c)

void calculation()

int main()

else

if (str[i] == '(')

if (str[i] == ')')

while (!symbol.empty() && level(symbol.top()) >= level(str[i])) calculation();

symbol.push(str[i]);

} }if (tag) digit.push(x);

while (!symbol.empty()) calculation();

cout << digit.top() << endl;

return 0;

}

計算(資訊學奧賽一本通 T1356)

題目描述 小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9,求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 輸入格式 共 1 行,為乙個算式。輸出格式 共 1 行,就是密碼。輸入樣例 1 3 2 7 2 69 2 ...

資訊學奧賽一本通(C 版)

資訊學奧賽一本通 c 版 總目錄 1.資訊學奧賽一本通 c 版 刷題 記錄 2.資訊學奧賽一本通 c 版 第一部分 c 語言 第一章 c 語言入門 3.資訊學奧賽一本通 c 版 第一部分 c 語言 第二章 順序結構程式設計 4.資訊學奧賽一本通 c 版 第一部分 c 語言 第三章 程式的控制結構 5...

資訊學奧賽一本通(C 版)keep

本想昨天更博,但被突如其來的攤牌掃了興致,總算解決了乙個麻煩事。時間限制 1000 ms 記憶體限制 65536 kb 提交數 19243 通過數 8506 題目描述 在情報傳遞過程中,為了防止情報被截獲,往往需要對情報用一定的方式加密,簡單的加密演算法雖然不足以完全避免情報被破譯,但仍然能防止情報...