1 class Solution {
 2 public:
 3     int coinChange(vector<int>& coins, int amount) {
 4         int len = amount+1;
 5         vector<int> vi(len, amount+1);
 6         vi[0] = 0;
 7         for(int coin: coins){
 8             for(int i=1;i<len;i++)
 9                 if(coin<=i)
10                     vi[i] = min(vi[i], vi[i-coin]+1);
11         }
12         return (vi[amount] > amount? -1 : vi[amount]);
13     }
14 };

这里用amount+1来初始化容器,很强势

在循环计算中,只需要计算-1当前硬币值就行了,因为前面会计算减去多个当前值的情况,这里再算就重复了

posted on 2020-01-15 15:42  高数考了59  阅读(145)  评论(0)    收藏  举报