【发布时间】:2019-06-12 22:45:19
【问题描述】:
序言:
当询问楼梯问题时,通常给定的允许步数数组是 [1,2,3]
在 SO 上查看许多相同问题的示例,例如 n-steps-with-1-2-or-3-steps-taken-how-many-ways-to-get-to-the-top
我的问题与此有关,但要为允许的步数包括负数和零的情况寻找证据。
有些东西是显而易见的,例如
- 如果所有的步长都是正数,那么可能的方法数 是有限且可解的。
- 如果任何步长为零,则数字 可能的方式变得无限。
- 如果至少有一个负步长 允许并且步长的任何组合总和为零,然后 可能的方式变得无限。
示例:
countSteps(stairSize:=5, [ 1,2,3]) // 17
countSteps(stairSize:=5, [0,1,2,3]) // 17...
countSteps(stairSize:=5, [-2,-1 ]) // zero ways
countSteps(stairSize:=5, [-2,-1,0]) // infinitely zero ways
countSteps(stairSize:=5, [2,4]) // zero ways
countSteps(stairSize:=5, [ 3]) // zero ways
countSteps(stairSize:=5, [-1,3]) // infinite ways
countSteps(stairSize:=5, [6,7,8]) // zero ways
问题:
? Can you determine whether given
a stair size (1.. for now)
and an array of allowable steps
is the result find-able ?
【问题讨论】:
-
这主要是一个数学问题(
stairSize在给定集合的加法闭包中,即stairSize可以写成给定整数的正整数倍的总和吗?)。 This answer 到一个相关问题应该是一个不错的起点。 -
正如您从 cmets 到我的回答中看到的那样,对于“楼梯问题”应该是什么似乎存在一些分歧。为了解决这个分歧,你能添加一个
countSteps(stairSize:=5, [-1,6,7,8])的例子吗? (具体来说:是无限方式,还是零方式?) -
感谢您查看我的帖子,我没有在标题中将其作为问题提出。
-
表达这个问题的一个困难是,最初的问题处理的是一个楼梯,它故意将问题限制在简单的情况下,因为一旦你在地面上,消极地移动不会改变你的状态。这意味着从第 3 步往下走 10 步只会让你着地,与后退 3 步完全一样。同样,从第 3 步开始向前迈步,一旦您到达着陆点,任何进一步的步骤都不会让您前进。
-
以前在 StackOverflow stackoverflow.com/search?q=stair+1+2+3
标签: algorithm