牛客網 程式設計題 表示式求值

2021-10-03 21:21:05 字數 1705 閱讀 3395

給出乙個布林表示式的字串,比如:true or false and false,表示式只包含true,false,and和or,現在要對這個表示式進行布林求值,計算結果為真時輸出true、為假時輸出false,不合法的表達時輸出error(比如:true true)。表示式求值是注意and 的優先順序比 or 要高,比如:true or false and false,等價於 true or (false and false),計算結果是 true。

輸入描述:

輸入第一行包含布林表示式字串s,s只包含true、false、and、or幾個單詞(不會出現其它的任何單詞),且單詞之間用空格分隔。 (1 ≤ |s| ≤ 103).

輸出描述:

輸出true、false或error,true表示布林表示式計算為真,false表示布林表示式計算為假,error表示乙個不合法的表示式。

示例1

輸入

and

輸出

error

示例2

輸入

true and false

輸出

false

示例3

輸入

true or false and false

輸出

true

思路

這題和簡單計算器很像,將or定義為較低的優先順序,and定義為較高的優先順序(模擬+,-,*,/)。true為1,false為0,將中綴表示式轉換為字尾表示式,進行計算。

//字尾佇列

stack<

int> st;

//比較符號棧

mapint> mp;

//優先順序

void

check

(string s)

else

st.push

(mp[t]);

}}t="";

}else

}while

(!st.

empty()

)}intcul()

else

else

}else

else}}

q.pop();

}if(num.

size()

>

1||num.

empty()

)else

}int

main()

else

}

表示式求值(牛客)

題目描述 給定乙個字串描述的算術表示式,計算出結果值。輸入字串長度不超過100,合法的字元包括 0 9 字串內容的合法性及表示式語法的合法性由做題者檢查。本題目只涉及整型計算。輸入描述 輸入算術表示式 中綴表示式 400 5輸出描述 計算出結果值 405做題思路 將輸入的中綴表示式,轉換為對應的字尾...

表示式求值(2019網易程式設計題)

今天上課,老師教了小易怎麼計算加法和乘法,乘法的優先順序大於加法,但是如果乙個運算加了括號,那麼它的優先順序是最高的。例如 1 2 3 4 1 2 3 7 1 2 3 5 1 2 3 6 1 2 3 9 現在小易希望你幫他計算給定3個數a,b,c,在它們中間新增 符號,能夠獲得的最大值。輸入描述 一...

牛客網 校招題 使用棧進行表示式求值

牛客網 校招題 使用棧進行表示式求值 簡單計算器 時間限制 1秒 空間限制 65536k 熱度指數 2762 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時...