class Solution { public int coinChange(int[] coins, int amount) { int []dp = new int[amount+1]; //初始化为amount+1, 便于后面min比较 for(int i=1; i<amount+1; i++) { dp[i] = amount+1; } dp[0] = 0; //外层循环枚举所有可能的面值 for(int i=0; i<amount+1; i++) { //内层循环求出该面值下所有可能选择的最小值 for(int coin : coins) { //过滤掉不可能的情况 if(i<coin) { continue; } dp[i] = Math.min(dp[i], dp[i-coin]+1); } } return (dp[amount]==(amount+1)) ? (-1) : dp[amount]; }
时间: 2023-03-27 21:04:39 浏览: 128
这是一个关于硬币找零的问题,使用动态规划算法来解决。具体实现过程中,先将dp数组初始化为amount+1,然后外层循环枚举所有可能的面值,内层循环求出该面值下所有可能选择的最小值。最后返回dp[amount],如果等于amount+1,则返回-1。
阅读全文
相关推荐










