您的位置:首页 > 大数据 > 人工智能

【LEETCODE】70-Climbing Stairs

2015-11-30 19:47 435 查看
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
http://www.zhihu.com/question/23995189
什么是动态规划?动态规划的意义是什么?

动态规划的本质,是对问题状态的定义和状态转移方程的定义。

如何拆分问题,才是动态规划的核心。

而拆分问题,靠的就是状态的定义和状态转移方程的定义。

要解决这个问题,我们首先要定义这个问题和这个问题的子问题

叫做对状态的定义。

上述状态定义好之后,状态和状态之间的关系式,就叫做状态转移方程。

参考: http://www.cnblogs.com/zuoyuan/p/3753553.html
如果有n个台阶,那么走完n个台阶的方式有f(n)种。
而走完n个台阶有两种方法,先走完n-2个台阶,然后跨2个台阶;
先走完n-1个台阶,然后跨1个台阶。所以f(n) = f(n-1) + f(n-2)。



class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""

dp=[1 for i in range(n+1)]

for i in range(2,n+1):
dp[i]=dp[i-1]+dp[i-2]

return dp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: