算法——C/动态规划

一、动态规划基础

什么是DP

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

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

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

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

分析步骤

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

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

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

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

数字三角

线性dp、

二维dp、

LIS、

LCS

相关推荐
Trouvaille ~4 小时前
【贪心算法】专题(一):从局部到全局,数学证明下的最优决策
c++·算法·leetcode·面试·贪心算法·蓝桥杯·竞赛
iAkuya4 小时前
(leetcode)力扣100 92.最小路径和(动态规划)
算法·leetcode·动态规划
shehuiyuelaiyuehao4 小时前
算法5,有效三角形个数
算法·leetcode·排序算法
丶小鱼丶4 小时前
数据结构和算法之【数组】
java·数据结构·算法
0 0 04 小时前
CCF-CSP 37-4集体锻炼【C++】考点:数学(最大公因数gcd特性),常数优化
开发语言·c++·算法
程序员小明儿4 小时前
量子计算探秘:从零开始的量子编程与算法之旅 · 第三篇
算法·量子计算
开源盛世!!4 小时前
3.9-3.11学习笔记
数据结构·算法
乌萨奇也要立志学C++4 小时前
【洛谷】图论 最小生成树详解:Prim与Kruskal算法(含代码实现)
算法·图论
智者知已应修善业4 小时前
【花费最少钱加油到最后(样例数据推敲)】2024-11-18
c语言·c++·经验分享·笔记·算法
飞Link4 小时前
深度解析 NT-Xent:对比学习中的标准化温度交叉熵损失
python·算法·数据挖掘·回归