动态规划
文章平均质量分 69
conanjaysir
fool,you know how we do it
展开
-
线性DP
一、什么是线性DP? 在线性结构上进行状态转移,目标函数为特定变量的线性函数,目的是求目标函数的最大值或最小值。 二、一些例题 1、(1143)最长公共子序列 求两个字符串 S1、S2 的最长公共子序列长度。 dp[i][j]代表 S1 前 i 位和 S2 前 j 位的最长公共子序列长度。 int[][] dp = new int[l1 + 1][l2 + 1]; for (int i = 1; i <= l1; i++) { for (int j = 1; j <= ..原创 2021-05-31 15:16:05 · 1057 阅读 · 0 评论 -
递推DP
一、什么是递推DP? 这波啊,这波是这波啊,这波是这波啊,这波是这波啊,这波啊,这波是这波啊这波啊,这波是这波啊,这波是······,这波是递推DP。 二、一些例题 1、(70)爬楼梯 需要 n 阶可到达楼顶,每次可爬 1 或 2 个台阶。求爬到楼顶的方法数。 dp[n] = dp[n-1] + dp[n-2]; ...原创 2021-05-18 08:46:21 · 186 阅读 · 0 评论 -
背包DP
一、什么是背包问题 有n件物品,每件物品的体积为 ,价值为 ,求在有限的背包容量 下所能携带的最大价值。背包问题可分为 0 - 1 背包、完全背包与多重背包。 二、0 - 1 背包 每件物品最多选择一次。 dp[0] = 0; //初始化 for (int i = 1; i < n; i++) { for (int j = W; j >= w[i]; j--) { //逆序 dp[j] = Math.max(dp[j], v[i] +.原创 2021-05-13 15:35:09 · 119 阅读 · 0 评论