322. 零钱兑换/C++

322. 零钱兑换/C++_第1张图片

int coinChange(vector<int>& coins, int amount) {
     
    if(coins.empty()) return 0;
    
    vector<int> dp(amount+1,amount+1);//表示dp长度为amount+1,每个元素初始化为amount+1
    //此处初始值只是表示一个较大的数而已,也可以用amount+2等等
    dp[0]=0;
    
    for(int i=1;i<=amount;++i)
        for(int j=0;j<coins.size();++j)
            if(i>=coins[j])
                dp[i]=min(dp[i],dp[i-coins[j]]+1);
    
    return dp.back()==(amount+1)?-1:dp.back();  
}

你可能感兴趣的:(动态规划,LeetCode/C++)