【问题标题】:n-stair / step climbing problem: cannot conceptualize why T(n) = T(n-1) + T(n-2)n 楼梯/阶梯攀登问题:无法概念化为什么 T(n) = T(n-1) + T(n-2)
【发布时间】:2019-11-04 00:47:26
【问题描述】:

我无法从概念上理解著名的 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 步,这意味着如果您的最后一步是@987654329,则有T(n-2) 方法可以到达n @ 和 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) 方法可以到达n 987654338@ 和T(n-1) 到达n 的方法,如果您的最后一步是n-1

这听起来不对。这个解释似乎自相矛盾。

T(n-1) 方法可以到达第n-1 步

T(n-1) 到达n 的方法,如果您的最后一步是n-1

T(n-2) 也是如此

我也对第二点感到困惑。当我们说解决方案是T(n-1) + T(n-2) 时,我的大脑会大喊‘但是等一下,你在重复计算。 T(n-1) 已经 包括 T(n-2)'。

谁能帮我从概念上理解T(n) = T(n-1) + T(n-2)的原因

PS 这不是关于实施解决方案的问题,而是关于如何解释/理解答案的问题。

【问题讨论】:

  • 如果您在数学证明方面遇到困难,那么编程问答网站可能是一个错误的寻求帮助的地方。
  • 也许你应该尝试写出 N 的小值的所有可能序列。将每个序列写成一系列步数。

标签: algorithm recursion dynamic-programming fibonacci


【解决方案1】:

当然,您在T(n-1)T(n-2) 中计算了一些重复路径。但是,决赛的最后一步是不同的!所以,这样想。最后一步可能是 1 或 2。现在,从这种分离中,您将拥有不同的路径,您不必担心建模中的任何事情。

【讨论】:

  • 如果您担心任何事情(以及所有事情?),您可能应该去看专业人士 :)
  • 谢谢!当您说the last step to the final is different! So, think like this. The last step could be 1 or 2 时,这很清楚。您有一组答案(称它们为路径、字符串、列表等),然后添加一个后缀。到T(n-1) 集你只能添加1T(n-2) 你只能添加2
【解决方案2】:

T(n) = T(n-1) + T(n-2)的原因

您引用的帖子采取了(在我看来是)查看流程结束的奇怪步骤。

让我们考虑一下当我们在过程的开始,在n 步骤的楼梯底部时会发生什么。 我们现在可以做什么

  • 我们可以采取 1 步,这让我们需要解决 n-1 问题

  • 我们可以采取 2 个步骤,这让我们需要解决 n-2 问题。

显然,我们要么做一个,要么做另一个。所以解决n问题的方法数正好是解决n-1问题的方法数加上解决n-2问题的方法数。

或者,T(n) = T(n-1) + T(n-2)

【讨论】:

  • 这个,加上@OmG 的评论帮助我理解了。对我来说,关键是把每一种爬楼梯的方式都列成一个清单,例如 1,2,1,1。在第 n 步,解决方案集是来自 n-2 的所有列表,附加 2,以及来自 n-1 的所有列表,附加 1。
猜你喜欢
  • 1970-01-01
  • 2017-10-03
  • 2013-06-19
  • 2017-12-24
  • 2012-03-21
  • 1970-01-01
  • 2011-08-03
  • 2015-08-04
  • 1970-01-01
相关资源
最近更新 更多