赞
踩
思路
min(0, 正确答案) = 0
,之所以取的是 amount+1 , 是因为这个值一定大于所有可能的组合方式,所以取最小值的时候一定不会是它。动态规划完成之后,如果结果仍然是这个值,说明不存在满足条件。代码
class Solution { public: int coinChange(vector<int>& coins, int amount) { int n = coins.size(); vector<int> dp(amount+1, amount+1); dp[0] = 0; for(int i=1; i<=n; ++i){ for(int j=1; j<=amount; ++j){ if(j >= coins[i-1]){ dp[j] = min(dp[j], dp[j-coins[i-1]] + 1); } } } if(dp[amount] >= amount+1) dp[amount] = -1; return dp[amount]; } };
收获
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。