算式最大值 思維題

2022-09-14 18:06:13 字數 1004 閱讀 8435

【問題描述】

給定: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中所有的數都是非負整...