這是波蘭表示式,題目中叫它是逆波蘭式。
這個題的話,我們用遞迴求解,首先理解一下波蘭表示式,就是將運算子前移了。
像是二叉樹的遍歷一樣,前序遍歷就是波蘭式,中序遍歷就是中綴表示式,後序遍歷就是逆波蘭表示式。
我們讀入一項之後就進行處理,這裡的讀入因為題目中給出了空格,也就是一次讀入的結束,所以我們每次讀入的都是分隔的字元,浮點數的字元也是被分隔的,所以我們就可以直接使用atof函式將字元轉浮點。
然後就很簡單了,除了讀入運算子,我們直接返回浮點數的值之外,我們都要進行遞迴的運算,既然有加號,那肯定還有一項等著加減,但是一定要是遞迴的計算,因為波蘭表示式本身就是乙個遞迴的過程。
像是+ 2 * 3 4 ,就是 2 +(3 * 4),三乘四是乙個項,所以我們要遞迴,判斷是否是運算子。這一項並不一定就是乙個數字。
#include #include using namespace std;
double exp()
}int main()
OpenJudge 2694 逆波蘭表示式
描述 逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 3的逆波蘭表示法為 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括 四個。輸入 輸入為一行,其中運算子和運...
Openjudge 2694 逆波蘭表示式
這是波蘭表示式,題目中叫它是逆波蘭式。這個題的話,我們用遞迴求解,首先理解一下波蘭表示式,就是將運算子前移了。像是二叉樹的遍歷一樣,前序遍歷就是波蘭式,中序遍歷就是中綴表示式,後序遍歷就是逆波蘭表示式。我們讀入一項之後就進行處理,這裡的讀入因為題目中給出了空格,也就是一次讀入的結束,所以我們每次讀入...
逆波蘭表示式POJ 2694
逆波蘭表示式是一種吧運算子前置的算術表示式,例如普通的表示式2 3的逆波蘭表示為 23.逆波蘭表示式的優點是運算子之間不必有優先順序的關係,也不必有括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4.本題求解的逆波蘭表示式的值。輸入資料 輸入為一行,其中運算子和運算數之間都用空格分隔,運...