時間限制: 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 題目描述 在情報傳遞過程中,為了防止情報被截獲,往往需要對情報用一定的方式加密,簡單的加密演算法雖然不足以完全避免情報被破譯,但仍然能防止情報...