leetcode 322 零錢兌換 動態規劃

2021-10-14 23:07:38 字數 650 閱讀 9039

動態規劃例題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...