【問題描述】
給定: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
【樣例輸出】
思路:輸入的所有數都是正整數,如果沒有括號的話,我們只需要減去最小的q個數;如果有括號的話,我們可以利用括號將q個減號變為1個減號即:a+b-(c-d-e),此時我們只要減去最小的那個數即可。
**:
#include
#include
int n,p,q,k,a[
105]
,sum;
intkk
(const
void
*a,const
void
*b)int
main()
qsort
(a,n,
sizeof
(int
),kk);if
(k==0)
else}}
else
sum-
=a[0];
}printf
("%d"
,sum)
;return0;
}
算式最大值
演算法給定 1 n個正整數a1,a2,an 2 p個加號 和q個減號 p q n 1 3 k對括號 請你使用全部整數 加減號和括號,組成乙個合法的算式 a1 an在算式中的順序隨意 使得算式的結果最大。注意加減號只能作為二元運算子出現在算式中,不能作為正負號。括號可以出現在算式最左和最右,例如 1 ...
第七周 算式最大值 Q君
問題描述 給定 1 n個正整數a1,a2,an 2 p個加號 和q個減號 p q n 1 3 k對括號 請你使用全部整數 加減號和括號,組成乙個合法的算式 a1 an在算式中的順序隨意 使得算式的結果最大。注意加減號只能作為二元運算子出現在算式中,不能作為正負號。括號可以出現在算式最左和最右,例如 ...
zzulioj 1959 陣列最大值 思維
time limit 1 sec memory limit 128 mb submit 37 solved 12 submit status web board 有乙個陣列a,它的初始下標為1,我們不知道這個陣列裡的元素,但知道這個陣列滿足以下幾個性質 長度為n,且a 1 0,a中所有的數都是非負整...