动态规划初识(爬楼梯问题)
1.什么是动态规划
自己的理解就是搜索问题的优化,可以用动归解决的问题都可以用搜索(DFS)来做
2. 动态规划可以解决问题的分类
1.Maxtrix DP 坐标类型的动归(x,y的二维矩阵,求方案总数等)
2 Sequence DP 序列的动归(跳跃游戏,打劫房屋,爬楼梯问题)
3 TWO Sequences DP 双序列的动归问题(两个字符转的比较)
4 背包问题
可以看看lintcode上动归的问题,大致分为以上四类
3 动态规划的要点
1.state 状态 f[i] 标识前i个位置/数字/字母
2.function f[i]=f[j] j是i之前的位置(j<i),也叫状态转移方程,下一步和上一步的联系是什么
3. 初始化f[0]
4. 答案是什么 answer f[i-1]
例题 爬楼梯问题
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的