动态规划思想
动态规划是一种算法思想,主要用于解决最优化问题,即在满足一定约束条件下,求解某个指标的最大值或最小值。动态规划通常用于具有重叠子问题和最优子结构性质的问题,可以通过将问题分解成子问题来求解,从而避免重复计算。
应用场景,例如:
1. 最长公共子序列问题:给定两个字符串,求它们的最长公共子序列。
2. 背包问题:给定一组物品和一个背包,每个物品有自己的重量和价值,在不超过背包容量的前提下,选择一些物品装入背包,使得装入的物品价值最大。
3. 最短路径问题:给定一个有向图和起点,求从起点到终点的最短路径。
4. 最大子段和问题:给定一个整数序列,求它的一个子序列,使得该子序列的和最大。
5. 编辑距离问题:给定两个字符串,求将一个字符串转换成另一个字符串所需的最少操作次数。
求解思路
1、定义最优解,一般用dp[i][j]表示
2、定义状态转移方程:需要分析,某个问题如何通过⼦问题来递归求解,也就是所谓的最优⼦结构。根据最优⼦结构,写出递归公式,也就是状态转移⽅程。
3、定义dp数组初始值
Linux等环境软件安装