算法——C/动态规划

一、动态规划基础

什么是DP

DP(动态规划)全称Dynamic Programming,是运筹学的一个分支,是一种将复杂问题分解成很多重叠的子问题,并通进子问题的解得到整个问题的解的眼一种算法在动态规划中有一些概念:

状态:就是形如dp[ i ] [ j ]= val 的噉值,其中i、j为下标,也是用于描述、确定状态所需的变其中val 为状态值。

状态转移:状态与状态之间的转移关系,一般可以表示为一个数学表达式,转移方向决定了迭代或递归方向。

最终状态:也就是题目所求的状态,最后的答案。

分析步骤

1.确定状态,一般为"到第i个为止xx为j(xx为k)的方案数/最小代价/最大价值",可以根据数据范围和复杂度来推理。

2.确定状态转移方程,即从已知状态得到新状态的方法,并确保按照这个方向一定可以正确地得到最终状态。

根据状态转移的方向来决定使用迭代法还是递归法、记忆法

3.确定最终状态并输出。

数字三角

线性dp、

二维dp、

LIS、

LCS

相关推荐
liuyao_xianhui18 分钟前
map和set_C++
java·开发语言·数据结构·c++·算法·宽度优先
墨^O^25 分钟前
C++ Memory Order 完全指南:从 relaxed 到 seq_cst,深入理解无锁编程与 happens-before
linux·开发语言·c++·笔记·学习·算法·缓存
6Hzlia36 分钟前
【Hot 100 刷题计划】 LeetCode 51. N 皇后 | C++ 回溯算法&状态数组
c++·算法·leetcode
脱氧核糖核酸__1 小时前
LeetCode热题100——41.缺失的第一个正数(题解+答案+要点)
数据结构·c++·算法·leetcode·哈希算法
脱氧核糖核酸__1 小时前
LeetCode热题100——73.矩阵置零(题目+题解+答案)
c++·算法·leetcode·矩阵
Mr_Xuhhh1 小时前
深入理解单链表的递归反转:从原理到实现
算法·leetcode·职场和发展
智者知已应修善业1 小时前
【51单片机数码管+蜂鸣器的使用】2023-6-14
c++·经验分享·笔记·算法·51单片机
迷途之人不知返1 小时前
算法类型:双指针类型
算法
吴可可1231 小时前
三点绘圆弧的几何实现
算法
kyle~1 小时前
导航---LIO(激光雷达-惯性里程计)算法
c++·算法·机器人·ros2·导航