給出乙個布林表示式的字串,比如: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時...