动态规划
文章平均质量分 87
zadarmo_
重庆大学22级研二,目前正在写论文,目标2024年5月份之前找到一份后端开发相关的实习。
展开
-
【leetcode】动态规划——序列问题总结
本文内容参考了代码随想录,并进行了自己的总结。原创 2024-02-11 20:25:43 · 553 阅读 · 0 评论 -
【leetcode】完全背包总结
本文内容参考了代码随想录,并进行了自己的总结。原创 2024-02-02 12:51:24 · 1052 阅读 · 1 评论 -
【leetcode】01背包总结(2024/2/2更新)
那最后 dp[W] 表示的就是从 N 个物品中选 1 个物品时的最大价值,这显然与 01 背包的题目含义冲突了:从 N 个物品中选若干个物品时(每个物品只选一次)的最大价值。因为每次递推用到的 dp[j-w[i]] 都是 0,因为 j 是从大到小遍历的,递推公式相当于变成了 dp[j]=Math.max(dp[j], v[i]),那不就是 N 个物品取最大值吗?对于二维的形式,两种遍历方式都可以,因为不管怎么样,dp[i][j] 都是被左上角的状态更新的,所以先更新左上角的哪一个,实际上都一样。原创 2024-01-28 13:33:49 · 908 阅读 · 0 评论 -
背包问题
最基本的背包问题大概被描述为:给定一个容量为V的背包,给定n个物品,每个物品有体积v[i]、价值w[i]。现在要把这些物品往里面放,可以得到的最大价值为多少? 背包问题有很多种,分为:01背包、完全背包、多重背包、混合背包、二位费用背包、分组背包、有依赖背包等等…… 背包问题的问法分为:在不装满的情况下最大价值、在装满情况下的最大价值 01背包 问题描述:有一个容量为V的背包。现有若干种物品...原创 2020-02-03 22:30:33 · 191 阅读 · 0 评论 -
最长公共子序列(LCS)
对于两个序列S1、S2,定义一个二维数组dp来记录最长公共子序列的长度,dp[i][j]表示S1前i个字符和S2前j个字符的最长公共子序列的长度。最长公共子序列的状态转移方程为: class Solution { public int lengthOfLCS(int[] nums1, int[] nums2) { int n1 = nums1.length, n2= nums2.lengt...原创 2020-02-03 20:41:42 · 223 阅读 · 0 评论 -
最长上升子序列(LIS)
已知一个序列{a1,a2,…,an},若存在i、j,满足i<j && ai<aj,则将{ai,aj}成为一个递增子序列。而最长上升子序列问题就是要在一个序列中找到一个长度最长的递增子序列。 以 [10,9,2,5,3,7,101,18] 为例: 遍历这个数组 对于当前索引为i的值,在索引小于i的部分找到一个j,满足dp[j] = max{dp[k]| 0 &...原创 2020-02-01 17:45:40 · 416 阅读 · 0 评论