动态规划_硬币问题
作者:互联网
假设有 1 元, 3 元, 5 元的硬币若干(无限) , 现在需要凑出 11 元,问如何组合才能使硬币的数量最少?
d(i) = d(j) + 1, j < i。通俗地讲,如果我们需要凑出 i 元,就在凑出 j 的结果上再加上某一个硬币就行了。
那这里我们加上的是哪个硬币呢。嗯,其实很简单,把每个硬币试一下就行了:
假设最后加上的是 1 元硬币,那 dp(i) = dp(i - 1) + 1。
假设最后加上的是 3 元硬币,那 dp(i) = dp(i - 3) + 1。
假设最后加上的是 5 元硬币,那 dp(i) = dp(i - 5) + 1。
因此,分别计算出 dp(i - 1) + 1,dp(i - 3) + 1,dp(i - 5) + 1 的值,取其中的最小值,即为最优解 d(i),状态转移方程:
dp[i] = min{dp[i - coins[j]] + 1}, 其中 i >= coins[j], 0 <= j < coins.length
标签:coins,硬币,加上,假设,凑出,动态,规划,dp 来源: https://www.cnblogs.com/hapyygril/p/13741137.html