动态规划
一、动态规划
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。
-
科技公司面试必考算法
-
题目类型多, 没有固定的模板
-
难度属于中上
二、动态规划之Fib数列
问题描述
有个小孩上楼梯,共有N阶楼梯,小孩一次可以上1阶,2阶。走到N阶楼梯,一共有多少种走法?
思路分析
DP之自顶向下分析方式:
爬到第N阶楼梯,一共只有2种情况(全划分,加法原理),从第N-1阶爬1阶到第N阶;从第N-2阶爬2阶到第N阶;
故:way(N)=way(N-1)+way(N-2)
代码实现
def fib(n):
memo = [-1 for x in range(n+1)]
memo[0] = 0
memo[1] = 1
memo[2] = 2
for i in range(3,n+1):
memo[i]