Contents
Problem
用給的錢幣分成兩堆,使的相差盡可能的少。
Solution
將錢數相加後除以二,用 DP 求出 dp[half] 時可湊出的最大金額。另一半是剩下的錢,相減即為答案。
有遇到類似問題,想試著直接用 greedy 解,從大取到小或小取到大,每次將數字往小堆的丟。
但很明顯會有問題,提供幾個例子:
5
7 8 10 100 105
4
2 3 100 101
輸出皆為 0
。
Code
1 |
|
用給的錢幣分成兩堆,使的相差盡可能的少。
將錢數相加後除以二,用 DP 求出 dp[half] 時可湊出的最大金額。另一半是剩下的錢,相減即為答案。
有遇到類似問題,想試著直接用 greedy 解,從大取到小或小取到大,每次將數字往小堆的丟。
但很明顯會有問題,提供幾個例子:
5
7 8 10 100 105
4
2 3 100 101
輸出皆為 0
。
1 |
|