我在概念上难以理解众所周知的n阶梯攀爬问题的解决方案。 n级问题是:
您有n步要爬。您一次只能爬1或2步。找到到达第N步的方法。
为简单起见,我们仅使用n = 2
的情况。解决方案是T(n) = T(n-1) + T(n-2)
,这当然是斐波那契数列。
关于 为什么 的解释通常是这样的:
您处于第n步。假设您一次可以爬1步或2步,您是如何到达那里的?好吧,您的上一步必须在步骤
n-1
(采取1步)或步骤n-2
(采取2步)中。现在,有T(n-1)
种方法可以达到第n-1个步骤,还有T(n-2)
种方法可以达到第n-2个步骤,这意味着有T(n-2)
种方法可以达到n
如果您的最后一步是在n-2
,并且如果您的最后一步是在T(n-1)
,则n
到达n-1
的方式。这是您最终达到n的仅有的两种可能性,因此,达到第n步的方法总数为T(n-1) + T(n-2)
我在构思下面的部分时遇到困难:
有
T(n-1)
种方法可以达到第n-1个步骤,还有T(n-2)
种方法可以达到第n-2个步骤,这意味着有T(n-2)
种方法可以达到{{1} },如果您的最后一步是在n
,如果您的最后一步是在n-2
,则T(n-1)
是到达n
的方式。
这听起来是错误的。这种解释似乎是矛盾的。
有
n-1
种方法可以达到第n-1个步骤
和
如果您的最后一步是在T(n-1)
,则和
T(n-1)
到达n
的方式
对于n-1
我还对第二点感到困惑。当我们说解决方案是T(n-2)
时,我的大脑大喊“但是等一下,您正在重复计算。 T(n-1)已经 包括 T(n-2)'。
有人可以从概念上帮助我了解T(n-1) + T(n-2)
PS这不是关于实施解决方案的问题,而是关于如何解释/理解答案的问题。
答案 0 :(得分:2)
的原因
T(n) = T(n-1) + T(n-2)
您引用的帖子需要(在我看来是)查看流程的结束的奇怪步骤。
让我们考虑一下,当我们处于流程的开始时,在n
阶梯的底部。我们现在可以做什么?
n-1
问题的解决OR
n-2
问题。很显然,我们要么一个做,要么另一个做。因此,解决n
问题的方法的数量正好是解决n-1
问题的方法的数量加上解决n-2
问题的方法的数量。
或者,T(n) = T(n-1) + T(n-2)
。
答案 1 :(得分:0)
当然,您在T(n-1)
和T(n-2)
中计算了一些重复的路径。但是,进入决赛的最后一步是不同的!所以,这样想。最后一步可能是1或2。现在,从这种分离中,您将获得不同的路径,并且您不必担心建模中的任何事情。