算式最大值

2021-09-11 06:01:29 字數 1025 閱讀 7555

演算法給定:

1)n個正整數a1, a2, … an;

2)p個加號+和q個減號-; (p+q=n-1)

3)k對括號()

請你使用全部整數、加減號和括號,組成乙個合法的算式(a1~an在算式中的順序隨意),使得算式的結果最大。

注意加減號只能作為二元運算子出現在算式中,不能作為正負號。

括號可以出現在算式最左和最右,例如(((1+2)))是合法的。

例如對於樣例資料,(2-1)+3或3+(2-1)等都是結果最大的算式。

第一行包含4個整數,n,p, q和k。

第二行包含n個整數a1, a2, … an。

2 ≤ n ≤ 100 p+q+1=n 0 ≤ k ≤ 10

1 ≤ ai ≤ 1000

最大算式結果

3 1 1 1

1 2 3

只要有括號總能把若干個減號化成乙個減號, 我們只要減去陣列裡最小的即可,而且只要乙個括號就行,多的也沒用;如果沒有括號,只能把較大的加起來,再減去較小的。

#include

#include

#include

using

namespace std;

class

sumvoid

operator()

(int num)

intdata()

};intmain()

//copy(vt.begin(),vt.end(),ostream_iterator(cout," "));

sort

(vt.

begin()

,vt.

end())

;int sum_all=

(for_each

(vt.

begin()

,vt.

end(),

sum())

).data()

; cout

else

return1;

}

算式最大值 思維題

問題描述 給定 1 n個正整數a1,a2,an 2 p個加號 和q個減號 p q n 1 3 k對括號 請你使用全部整數 加減號和括號,組成乙個合法的算式 a1 an在算式中的順序隨意 使得算式的結果最大。注意加減號只能作為二元運算子出現在算式中,不能作為正負號。括號可以出現在算式最左和最右,例如 ...

第七周 算式最大值 Q君

問題描述 給定 1 n個正整數a1,a2,an 2 p個加號 和q個減號 p q n 1 3 k對括號 請你使用全部整數 加減號和括號,組成乙個合法的算式 a1 an在算式中的順序隨意 使得算式的結果最大。注意加減號只能作為二元運算子出現在算式中,不能作為正負號。括號可以出現在算式最左和最右,例如 ...

int 最大值 239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大...