其他分享
首页 > 其他分享> > 动态规划_硬币问题

动态规划_硬币问题

作者:互联网

假设有 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