逆波蘭表示式是一種吧運算子前置的算術表示式,例如普通的表示式2+3的逆波蘭表示為+23.逆波蘭表示式的優點是運算子之間不必有優先順序的關係,也不必有括號改變運算次序,例如(2+3)*4的逆波蘭表示法為*+2 3 4.本題求解的逆波蘭表示式的值。
輸入資料:
輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數。
輸出要求:
輸出為一行,即表示式的值。
輸入樣例:
* + 11.0 12.0 +24.0 35.0+
輸出樣例:
1357.000000
解題思路:
這個問題看上去有些複雜,如果只是簡單地模擬計算步驟不太容易想清楚,但是如果用遞迴的思想就非常容易想清楚。這裡根據逆波蘭表示式的定義進行遞迴求解。在遞迴函式中,針對當前的輸入有5種情況:1。輸入是常數,則表示式的值就是這個常數;2.輸入的是『+』,則表示式的值是再繼續讀入兩個表示式並計算出他們的值,然後將他們的值進行相加;3.輸入『-』;4.輸入是『*』;5.輸入是『/』;後三種情況與2.相同,只是計算從『+』變成『-』,『*』,『/』。
**:
#include#include#include
#include
using
namespace
std;
double
exp()
}int
main()
逆波蘭表示式是一種吧運算子前置的算術表示式,例如普通的表示式2+3的逆波蘭表示為+23.逆波蘭表示式的優點是運算子之間不必有優先順序的關係,也不必有括號改變運算次序,例如(2+3)*4的逆波蘭表示法為*+2 3 4.本題求解的逆波蘭表示式的值。
輸入資料:
輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數。
輸出要求:
輸出為一行,即表示式的值。
輸入樣例:
* + 11.0 12.0 +24.0 35.0+
輸出樣例:
1357.000000
解題思路:
這個問題看上去有些複雜,如果只是簡單地模擬計算步驟不太容易想清楚,但是如果用遞迴的思想就非常容易想清楚。這裡根據逆波蘭表示式的定義進行遞迴求解。在遞迴函式中,針對當前的輸入有5種情況:1。輸入是常數,則表示式的值就是這個常數;2.輸入的是『+』,則表示式的值是再繼續讀入兩個表示式並計算出他們的值,然後將他們的值進行相加;3.輸入『-』;4.輸入是『*』;5.輸入是『/』;後三種情況與2.相同,只是計算從『+』變成『-』,『*』,『/』。
**:
#include#include#include
#include
using
namespace
std;
double
exp()
}int
main()
POJ 2694逆波蘭表示式
問題描述 逆波蘭表示式是一種吧運算子前置的算術表示式,例如普通的表示式2 3的逆波蘭表示為 23.逆波蘭表示式的優點是運算子之間不必有優先順序的關係,也不必有括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4.本題求解的逆波蘭表示式的值。輸入資料 輸入為一行,其中運算子和運算數之間都用空...
poj 2694 逆波蘭表示式(遞迴)
題目 逆波蘭表示式是一種把運算子前置的算術表示式,例如 普通的表示式2 3的逆波蘭表示法為 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括 四個。input 輸入為一行,其中運...
遞迴專題 POJ 2694 逆波蘭表示式
總時間限制 1000ms 記憶體限制 65536kb 描述 逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 3的逆波蘭表示法為 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如 2 3 4的逆波蘭表示法為 2 3 4。本題求解逆波蘭表示式的值,...