【算法】动态规划--思路及例题整理

斐波那契
96. Unique Binary Search Trees

64. minimum path sum
都是典型的dp问题
他们的共同点是具有相同结构的子问题
在这种情况下就要 利用dp table记录已经得到的结果

动态规划的核心还是穷举,这类问题由于存在【重叠的子问题】,暴力穷举效率太低,需要利用备忘录或者dp table来减少不必要的计算。

递归算法的时间复杂度:
子问题的个数*一个子问题所用的时间
子问题的个数,即递归树中节点的总数。二叉树节点的总数为指数级别,2^n

带备忘录的递归解法-自顶向下
迭代的动态规划 -自底向上
即动态规划从问题规模最小向上推,直到推到答案。所以dp一般都是用循环迭代。

动态规划问题最困难的就是写出状态转移方程,即这个暴力解。优化方法无非是用备忘录或者 DP table,再无奥妙可言。

  1. 零钱兑换

62和64简直就是一样
先做了64再做62就是降维打击了,当然62有更简单的数学方法

更为神奇的是,64和1143最长公共子序列竟有异曲同工之妙
1143题干又可衍生出诸多变化
坐在计程车上,想到这里,竟然生出一股大圆满之意

718 Maximum Length of Repeated Subarray 标准的dp问题
300 longest increasing subsequence

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值