代码的尽头是算法,😄所以对于算法这门教学讲解任重道远,铁子们撸起袖子~
所谓动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。动态规划一般可分为四类:线性动规,区域动规,树形动规,背包动规。
- 线性动规:拦截导弹,合唱队形,挖地雷,建学校,剑客决斗等;
- 区域动规:石子合并,加分二叉树,统计单词个数,炮兵布阵等;
- 树形动规:贪吃的九头龙,二分查找书,聚会的欢乐,数字三角形等;
- 背包问题:01背包问题,完全背包问题,分组背包问题,二维背包,装箱问题,挤牛奶等;
应用实例:最短路径问题,项目管理,网络流优化等。
一、动态规划,经典算法题:斐波那契队数
第一种.动态规划解题
const fib = (n) =>{
if(n<=1) return n
const dp = [1,2]
for(let i=2;i<=n;i++){
dp[i] =dp[i-1]+dp[i-2]
}
return dp[n]
}
第二种.优化动态规划解题
这里主要是优化存储空间,将数组修改为变量