演算法給定:
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 解釋 滑動視窗的位置 最大...