藍橋杯 演算法訓練 表示式計算 棧的應用

2021-08-13 04:39:38 字數 845 閱讀 4165

輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。

輸入一行,包含乙個表示式。

輸出這個表示式的值。

1-2+3*(4-5)

-4

表示式長度不超過100,表示式運算合法且運算過程都在int內進行。

兩個棧,乙個存數字,乙個存運算子,掃瞄字串,當當前運算子優先順序小於棧頂運算子時,對上一次存入進行運算操作。

#include

#include

#include

#include

using

namespace

std;

stack

num;

stack

st;

char s[150];

int solve()

int main()

num.push(t);

}else

if(s[i] == '(') st.push(s[i++]);

else

if(s[i] == '+' || s[i] == '-') else

}else

if(s[i] == '*' || s[i] == '/')

}else

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

st.pop();

i++;}}

while(st.size() > 1)

cout

<< solve() << endl;

return

0;}

藍橋杯 演算法訓練 表示式計算

之前在學習棧的時候老師講過這個問題 思路就是 1.將表示式 中綴式 轉化成字尾式 2.進行字尾式的計算。思路看起來很簡單,但是實際在敲 的時候還是要注意很多問題。下面分享一下個人做法,可以改進之處還希望大家可以指出來,共同進步!一 將中綴式轉化為字尾式 個人採用的是邊輸入邊進行處理 首先設定兩個棧,...

藍橋杯 演算法訓練 表示式計算 (python實現)

class stack object 初始化棧為空列表 def init self self.items 判斷棧是否為空,返回 true 或 false defis empty self return self.items 壓棧,新增新元素進棧 defpush self,item 出棧,刪除棧頂元素...

演算法訓練 表示式計算(棧)

演算法訓練 表示式計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。輸入格式 輸入一行,包含乙個表示式。輸出格式 輸出這個表示式的值。樣例輸入 1 2 3 4 5 樣例輸出 4資料規模和約定 表示式長度不超過100...