Dynamic Programming动态规划详细介绍(有例题)

Dynamic Programming:

定义:

DP定义:
动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。
在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果。

特点:

动态规划具备了以下三个特点

  1. 把原来的问题分解成了几个相似的子问题。
  2. 所有的子问题都只需要解决一次。
  3. 储存子问题的解

本质:

是对问题状态的定义和状态转移方程的定义(状态以及状态之间的递推关系)

考虑角度:

动态规划问题一般从以下四个角度考虑:

  1. 状态定义
  2. 状态间的转移方程定义
  3. 状态的初始化
  4. 返回结果

状态定义的要求:

定义的状态一定要形成递推关系

一句话概括:

三特点四要素两本质

适用场景:

最大值/最小值, 可不可行, 是不是,方案个数

题目详解:

第一题:斐波那契数列

https://blog.csdn.net/sakeww/article/details/122770286

第二题:字符串分割(Word Break)

https://blog.csdn.net/sakeww/article/details/122857096

第三题:三角矩阵(Triangle)

https://blog.csdn.net/sakeww/article/details/122861135

第四题:路径总数(Unique Paths)

https://blog.csdn.net/sakeww/article/details/122863621

第五题:最小路径和(Minimum Path Sum)

https://blog.csdn.net/sakeww/article/details/122864886

第六题:背包问题

https://blog.csdn.net/sakeww/article/details/122867718

第七题 回文串分割(Palindrome Partitioning)

https://blog.csdn.net/sakeww/article/details/122894050

第八题 编辑距离(Edit Distance)

https://blog.csdn.net/sakeww/article/details/122899542

第九题 不同子序列(Distinct Subsequences)

https://blog.csdn.net/sakeww/article/details/122900255

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值