【发布时间】:2014-01-19 09:54:00
【问题描述】:
我遇到了两个动态编程问题。问题之一是
考虑到我一次可以跳 1、2 或 3 步,爬 n 步楼梯的可能方法有多少?
解决这个问题的动态规划方法如下。
If C(n) is number of ways of climbing the staircase, then
C(n) = C(n-1) + C(n-2) + C(n-3) .
This is because , if we reach n-1 stairs, we can hop to n by 1 step hop or
if we reach n-2 stairs, we can hop to n by 2 step hop or
if we reach n-3 stairs, we can hop to n by 3 step hop
当我正要思考的时候,我理解了上面的方法,我遇到了硬币找零的问题
给定无限数量的 25 美分硬币、10 美分硬币(角钱)、5 美分硬币(镍)和 1 美分硬币,表示 n 美分的方式是多少
事实证明,这个问题的解决方案与上面的解决方案不同,而且有点复杂。那是 , C(n) = C(n-1) + C(n-5) + C(n-10) + C(n-25) 不正确。我仍在尝试了解解决此问题的方法。但我的问题是硬币找零问题与更简单的攀爬步骤问题有何不同?
【问题讨论】:
-
因为更改时订单不计算在内。
标签: recursion dynamic-programming