![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划dp
一只冰凌龙
这个作者很懒,什么都没留下…
展开
-
基本动态规划题学习笔记与解析——3 (最长公共子序列问题)
例给定两个字符串 s1s2s3……sn 和 t1t2t3……tn 求这两个字符串最长的公共子序列的长度。字符串s1s2s3……sn 的子序列指从左到右依次取出的元素组成的序列。(如 “adf” 是“asdfg”的子序列)样例输入s1=“abcd”s2=“becd”样例输出3(“bcd”)思路我们可以利用dp数组,从地基依次向上递推,记忆来不断地更新最大值。我们先找到他的...原创 2019-08-02 16:22:26 · 191 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——4(完全背包问题)
这个问题是前几篇文章问题的升级版例题有n个重量和价值分别为 wi 和 vi 的物品,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中价值总和的最大值**。在这里,每种物品可以挑选多件**样例输入n=3(w,v)={(3,4) (4,5) (2,3)}W=7样例输出10(0号选一个,2号选两个)这一次同一种物品可以选择多件,我们先试试模拟出求解程序for(i=0;i&l...原创 2019-08-02 17:29:01 · 239 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——5(完全背包问题与背包问题的不同点)
这里先从一个洛谷的例题开始介绍题目描述LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你...原创 2019-08-06 17:03:44 · 178 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——1
最最最基本的动态规划题,最近室友问的挺多就写一下例:有n个重量和价值分别为 wi 和 vi 的物品,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中价值总和的最大值样例输入n=4;(w,v)={(2,3) (1,2) (3,4) (2,2)}W=5;输出7(选第0,1,3号物品)记忆化搜索#include<stdio.h>#include<string...原创 2019-08-02 14:28:51 · 115 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——2
还是上一篇文章的题,这次我们换个方法例:有n个重量和价值分别为 wi 和 vi 的物品,从这些物品中挑选出重量不超过W的物品,求所有挑选方案中价值总和的最大值样例输入n=4;(w,v)={(2,3) (1,2) (3,4) (2,2)}W=5;输出7(选第0,1,3号物品)我们可以仔细研究一下之前的dp数组,以dp[i] [j]为例,可以理解成“从第i个物品开始向后挑选,总价值...原创 2019-08-02 14:49:33 · 173 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——6(多重部分和问题)
例有n种不同大小的数字ai ,每种有mi 个,判断是否可以从这些数字中选出若干使他们的和恰好为k样例输入n=3aia_iai,mim_imi3 35 28 2k=17输出YES (3*3+8=17)思路同样是用基本的dp来求解,一般遇到这种问题,我们首先要找到他的递推式我们假定dp【i】【j】表示 “用前 i 种数字加和得到j时还剩多少个m【i】,如果不能得到则取-1...原创 2019-08-09 20:15:55 · 273 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——7(最长上升子序列问题)
有一个长度为n的数列a0,a1,a2,…,an−1a_0,a_1,a_2,…,a_{n-1}a0,a1,a2,…,an−1请求出这个序列中最长的上升子序列的长度样例输入n =5a= {4,2,3,1,5}输出3 ( 2,3,5)同样,我们要用dp来解决这个问题的话,首先要找出他的递推式我们假设 dp【i】= 以ai 为末尾的最长上升子序列的长度。而这个长度可能是如下:...原创 2019-08-09 21:31:01 · 276 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——8(划分数问题)
这里我们仍然用dp来求解例有n个无区别的物品,将其划分成不超过m组,求出划分方法数取模M的余数样例输入n=4m=3M=10000输出4 (1+1+2 = 1+3 = 2+2 = 4)这样的划分被称作n的m划分数。 dp问题对于计算各种排列组合个数,概率或者期望之类的计算都非常有用,在此,我们定义如下数组dp【i】【j】=j 的 i 划分的总数根据这一关系,我们可以...原创 2019-08-14 18:03:42 · 260 阅读 · 0 评论 -
基本动态规划题学习笔记与解析——9(多重集组合数问题)
还是用dp的方式讲解例有n种物品,第i种物品有ai个,不同种类的物品可以相互区分,但相同种类的无法区分。从这些物品中取出m个的话,有多少种取法?求出方案取模M的余数样例输入n=3m=3a={1,2,3}M=10000输出6 (0+0+3, 0+1+2,0+2+1,1+0+2,1+1+1,1+2+0)为了用dp求解,我们首先要找到其对应的递推式。首先,我们定义dp【i+1...原创 2019-08-15 10:30:54 · 365 阅读 · 0 评论