70. Climbing Stairs

爬楼梯问题:假设你正在爬楼梯,可以在n步之内到达顶端,但每次你只能爬1步或2步,求到达顶端的不同方法的个数。

70. Climbing Stairs

这道题的第一个解法是我无意间发现的,我从n=1算到n=4,发现答案其实是一个斐波那契数列,所以就有递归循环两种解法,亲测递归的解法会发生超时,所以这里不再给出递归的解法。

70. Climbing Stairs

第一种方法的提交结果如图所示,感觉一般般。

70. Climbing Stairs

第二种解法是基于动态规划的思想:

当n=1,ways=1

当n=2,ways=2

当n=3,ways=3

.....

当n=k,ways(k)=ways(k-1)+ways(k-2)

于是第二种解法是基于动态规划的方法:

70. Climbing Stairs

这种方法的提交结果如图所示,感觉效果还是一般般把。

70. Climbing Stairs

感觉方法都是正确的,至于为什么效率这么低,考虑到可能是编程语言的问题,换了下C语言,同样的动态规划的算法的结果如图所示:

70. Climbing Stairs