動態規劃例題1
轉移方程:
這個題目即使知道了轉移方程,最後寫出正確的程式也還是很難,有幾個細節需要注意
1.開的結果陣列大小是amount+1,這是因為我們的f(x)表示拼成x最少有幾種方式,最後返回f(amount),所以陣列開闢amount+1。
2.初始條件f[0]=0,所以遍歷f[i],從i=1開始遍歷
3.為什麼f[i]初始化為int_max?這是為了方便後面f[i] = min(f[i], f[i - coins[j]]+1)。初始化為乙個非常大的數,經過min函式,這個f[i]絕大多數情況下會被更新,沒有更新說明沒有進入if語句。而如果把f[i]初始化為-1,則在min時就會有**煩,因為不會有f[i]小於-1,這樣就一直不會更新。
int coinchange(vector& coins, int amount)
}} if (f[amount] == int_max) f[amount]=-1;
return f[amount];
leetcode322 零錢兌換
給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11輸出 3解釋 11 5 5 1 示例 2 輸入 coins 2 amount 3...
leetcode 322 零錢兌換
給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1示例 2 輸入 coins 2 amount ...
LeetCode 322 零錢兌換
322 零錢兌換 題目 給定不同面額的硬幣 coins 和乙個總金額 amount。編寫乙個函式來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回 1。示例 1 輸入 coins 1,2,5 amount 11 輸出 3 解釋 11 5 5 1 示例 2 輸入 co...