波蘭表示式

2022-02-17 04:03:47 字數 1178 閱讀 4560

題目:

逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 + 3的逆波蘭表示法為+ 2 3。逆波蘭表示式的優點是

運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如(2 + 3) * 4的逆波蘭表示法為* + 2 3 4。本題求解逆波蘭

表示式的值,其中運算子包括+ - * /四個。輸入輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數。輸出

輸出為一行,表示式的值。可直接用printf("%f\n", v)輸出表示式的值v。樣例輸入

* + 11.0 12.0 + 24.0 35.0

樣例輸出

1357.000000

這裡先列乙個**,是波蘭表示式的維基百科,讓讀者弄明白什麼是波蘭表示式,即字首表示式。題目中的逆波蘭表示式實際上

是錯誤的。

對於波蘭表示式的運算順序,我覺得這張圖看懂的話,就不會再有任何的問題。

- * / 15 - 7+ 1 13 + 2 + 1 1 =

- * / 15- 7 23 + 2 + 1 1 =

- */ 15 53 + 2 + 1 1 =

-* 3 3+ 2 + 1 1 =

- 9 + 2+ 1 1=

- 9+ 2 2=- 9 4=5

關於這道題目的思想就是棧的思想,還有就是遞迴的思路。

#include using namespace std;

char s[1005];

double f()

}int main()

這種解法我覺得是比較高階的解法,核心思想就是每次都從字串中讀入乙個字元,然後通過switch語句選擇分路,這個函式唯一

的出口就是兩個讀入的數值都是常數值,而不是加減乘除,然後就得到乙個結果,結合之前波蘭表示式的用法和遞迴的思路就很方

便解決這個問題。

波蘭表示式 逆波蘭表示式

中綴表示式是最常見的運算表示式,如 3 5 2 6 1 波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的 比如中綴表示式為 3 5x 2 6 1 對應的字首表示式為 3 x 5 2 6 1 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...

波蘭表示式與逆波蘭表示式

2018年09月03日 11 29 15 jitwxs 閱讀數 70 標籤 波蘭 字首 更多 個人分類 演算法與資料結構 常見的算術表示式,稱為中綴表示式,例如 5 6 4 2 3波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為 5 6 4 2 3中綴表示式轉換字首表示式的操作過程為 1...

波蘭表示式和逆波蘭表示式

題目 根據逆波蘭表示法,求表示式的值。有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。說明 示例 1 輸入 2 1 3 輸出 9 解釋 該算式轉化為常見的中綴算術表示式為 2 1 3 9 示例 2 輸入 4 13 5 輸出 6 解釋 該算式轉化為常見的中綴算術表示式為 4 13...