2021 4 1演算法題打卡 字尾表示式

2022-09-01 03:12:11 字數 1680 閱讀 1455

時間限制: 1.0s 記憶體限制: 512.0mb 本題總分:25 分

【問題描述】

給定 n 個加號、m 個減號以及 n + m + 1 個整數 a1,a2,··· ,an+m+1,

小明想知道在所有由這 n 個加號、m 個減號以及 n + m +1 個整數

湊出的合法的字尾表示式中,結果最大的是哪乙個?

請你輸出這個最大的結果。

例如使用1 2 3 + -,則 「2 3 + 1 -」 這個字尾表示式結果是 4,是最大的。

【輸入格式】

第一行包含兩個整數 n 和 m。 第二行包含 n + m + 1 個整數 a1,a2,··· ,an+m+1。

【輸出格式】

輸出乙個整數,代表答案。

【樣例輸入】

1 1 1 2 3

【樣例輸出】

4【評測用例規模與約定】

對於所有評測用例,0≤ n,m ≤100000,−109 ≤ ai ≤109。

原答案

這道題的第乙個坑,可能你們不知道字尾表示式的定義是什麼.

字尾表示式是運算子位於運算元之後,計算機從左到右掃瞄表示式,

遇到數字就直接入棧,遇到運算子就彈出棧頂兩個數進行計算,

將結果壓入數棧,一直重複得到結果

知道通過了第乙個坑還有可能進入第二個坑,你有可能在想,將這些數字按照從小到大

進行排序,然後用所有的加號將大的數值加起來,然後將所有小的數值減了,

因為你覺得這道題沒有括號和優先順序之類的

但是這樣又錯了

字尾表示式是本來沒有括號但是又有優先順序的表示式,比如:

+,+,-,-,1,2,3,4,5

如果是5+4+3-2-1=9

如果是字尾表示式5 4 3 + + 1 2 - - =13

對應中綴表示式5+4+3-(1-2)=13

所以這道題加上了字尾表示式就是有優先順序的了

現在就是這道題所有的數中有正有負

如果所有都是正數,我們可以使用乙個減號將其他的減號變成加號,有多少個減號

就將多少個減號放在括號裡面讓它變成加號,所以結果就是:

除了最小的數,所有的數加起來減去最小的數,就是

a+(b+c)-d

如果都是負數,就用加號的全部放在括號中讓他變成正數,所以結果就是:

除了最大的數,其他的都是可以變成正數,可以改成

a+(b+c)-d

如果有正有負有,也是將負的全部變成正數,減號不夠就用括號括起來再減

所以還是全部的絕對值加起來減去乙個絕對值最小的

a+(b+c)-d

上面的(b+c)就是無論正負都可以變成正數的數,

上面所有的分類都是所有的數加起來,然後減去最小的,因為想將負數變成正數,必須

用減號來將它改成正數,但是最開始那個被減數就不能弄成正的

public class t9字尾表示式2 

if(number[max]}

long sum=0;

if(m==0)

}else

sum=(sum-math.abs(number[max])-math.abs(number[min]))+(number[max]-number[min]);

}system.out.println(sum);

in.close();

}}

2021 3 14演算法題打卡

樂羊羊飲料廠正在舉辦一次 優惠活動。樂羊羊c型飲料,憑3個瓶蓋可以再換一瓶c型飲料,並且可以一直迴圈下去,但不允許賒賬。請你計算一下,如果小明不浪費瓶蓋,盡量地參加活動,那麼,對於他初始 的n瓶飲料,最後他一共能得到多少瓶飲料。輸入 乙個整數n,表示開始購買的飲料數量 0例如 使用者輸入 100程式...

2021 3 16演算法題打卡

蘭頓螞蟻,是於1986年,由克里斯 蘭頓提出來的,屬於細胞自動機的一種。平面上的正方形格仔被填上黑色或白色。在其中一格正方形內有乙隻 螞蟻 螞蟻的頭部朝向為 上下左右其中一方。螞蟻的移動規則十分簡單 若螞蟻在黑格,右轉90度,將該格改為白格,並向前移一格 若螞蟻在白格,左轉90度,將該格改為黑格,並...

演算法打卡第三題(陣列 移除元素)

題目 解題思路 我認為這一題移除元素與我做的上一題刪除重複元素有異曲同工之妙,不同的是,題目已經給定了我們乙個val值,讓我們與陣列中的值一一比較,唯一的難點就是第乙個值如何移除,這裡我們同意需要定義乙個新的變數length表示新陣列的長度,賦length 0,這裡我們像上題賦length初值為1的...