給定 n 個加號、m 個減號以及 n+m+1 個整數 a1,a2,⋅⋅⋅,an+m+1,小明想知道在所有由這 n 個加號、m 個減號以及 n+m+1 個整數湊出的合法的字尾表示式中,結果最大的是哪乙個?
請你輸出這個最大的結果。
例如使用 123+−,則 「23+1−」 這個字尾表示式結果是 4,是最大的。
輸入格式
第一行包含兩個整數 n 和 m。
第二行包含 n+m+1 個整數 a1,a2,⋅⋅⋅,an+m+1。
輸出格式
輸出乙個整數,代表答案。
輸入樣例:
1 11 2 3
輸出樣例:
4注意字尾表示式是電腦計算的格式(兩個數壓棧,遇見符號提取出來計算再壓棧)
,根據二叉樹的中序遍歷得來的表示式才是我們日常所見形式。
程式設計時可以根據中序遍歷二叉樹的思路進行求解。
#include
#include
using
namespace std;
long
long a[
1000000];
intmain()
// 根節點(符號)左右子樹都要有節點,於是可以讓根節點為-
// a-(b-c-d)
// 於是找出來唯一減去的b(最小值)和初始的a(最大值)
// 對於負數可以使用+放在右子樹,+用完還可以使用-放在左子樹,最終效果是把負數全轉化為正數相加
// 但是可能全是正數或者全是負數,這樣不能全部放在一邊要取出來乙個於是有了以下操作。
// 只有左子樹最左邊符號還有右子樹最左邊符號需要根據貪心的根節點是負號進行特判
else
cout
}
第十屆藍橋杯省賽C B組 字尾表示式
題目鏈結 字尾表示式 解題思路 當減號數目小於負數數目時,由於字尾表示式具有隱含的括號,相當於帶括號的中綴表示式,所以只要有乙個減號,既可以衍生出無數的減號,eg a b c z a b c zeg a b c z a b c z eg a b c z a b c z,n 3,m 1 n個整數分別為...
2019第十屆藍橋杯省賽 賽後反思
太菜了!太菜了!太菜了!太飄了!太飄了!太飄了!又菜又膨脹!唉,本來可以省一的,太膨脹了,居然都沒有認真的去想特殊案例。比賽剛開始的時候還很認真的,看了前幾個題,感覺好簡單,就開始膨脹了。結果。第四題就錯了。第七題忘了有沒有考慮負數了 估計沒有考慮 第八題居然沒有考慮到公差為0的情況 啊啊啊啊!第九...
第十屆藍橋杯 C C B組 I 字尾表示式
題目連線首先說一下他的 我覺得是錯誤的,但是思路對不對我也不知道 1 不存在負號 直接加2 存在負號的個數 負數的個數 起碼乙個正數存在 其實就是把這個陣列所有的絕對值相加 3 存在負號的個數 負數的個數 有正數存在 其實和第二種情況是一樣的,也是所有數的絕對值求和 列如 2 1 2 3 多餘的負數...