![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划
动态规划
Leida_hzm
一步一个脚印,踏踏实实搞技术
展开
-
最长公共子序列(dp经典题)
描述 我们称序列Z = < z1, z2, …, zk >是序列X = < x1, x2, …, xm >的子序列当且仅当存在 严格上升 的序列< i1, i2, …, ik >,使得对j = 1, 2, … ,k, 有xij = zj。比如Z = < a, b, f, c > 是X = < a, b, c, f, b, c >的子序列。 现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找到一个最长的序列Z,使得Z既是X的子原创 2020-10-12 19:21:16 · 313 阅读 · 0 评论 -
最长上升子序列(dp+二分)
题目描述 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1 <= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8). 你的任务原创 2020-10-12 17:51:54 · 193 阅读 · 0 评论 -
P2347 砝码称重(背包 巧解)
题目来自->P2347 砝码称重 题目描述 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重\le 1000≤1000), 输入格式 输入方式:a1,a2,a3, a4,a5 ,a6(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个) 输出格式 输出方式:Total=N(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) 输入输出样例 输入 1 1 0 0 0 0 输出 Total=3 解法一: 01背包思想:记录0到1000重量是否成立,用1原创 2020-10-05 23:46:20 · 627 阅读 · 1 评论 -
P1115 最大子段和(dp)
题目描述 给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数,表示序列的长度 n。 第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai 。 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 7 2 -4 3 -1 2 -4 3 输出 4 说明/提示 样例 1 解释 选取 [3, 5]子段{3,−1,2},其和为 4。 思路 一道标准的dp简单题,s代表此时的和,遍历,更新最大子段和sum,如果s <= 0则s = 0;原创 2020-10-03 22:32:24 · 178 阅读 · 0 评论 -
数字三角形(动态规划入门题)
题目描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。 输入 输入的是一行是一个整数N (1 < N <= 100),给出三角形的行数。下面的N行给出数字三角形。数字三角形上的数的范围都在0和100之间原创 2020-09-09 20:45:27 · 725 阅读 · 0 评论