动态规划
圣托里尼的日落啊~
这个作者很懒,什么都没留下…
展开
-
动态规划--最大子矩阵 poj1050
动态规划–最大子矩阵阅读本文前,请先移步最大连续子序和题目来源:poj1050 To the Max题目描述:求一个最大为100*100矩阵中的子矩阵中元素之和的最大值。将二维压缩成一维,然后转换成最大连续子序和来求解。先固定需要压缩的行的上界row irow~irow i用一个for循环遍历row irow~irow i到row&n...原创 2019-04-27 14:30:06 · 849 阅读 · 0 评论 -
动态规划机试题目合集
poj部分初级poj1050 基础DPpoj1837 [背包]poj1276 [背包]最长公共子序列poj3176poj1080poj1159poj3267poj1836poj1260poj2533中级较为复杂的动态规划poj1191poj1054poj3280poj2029poj2948poj1925poj3034记录状态的动态规划poj3254...原创 2019-05-07 17:05:53 · 220 阅读 · 0 评论 -
动态规划笔记(二)
题目:小兵向前冲题目描述:N*M的棋盘上,小兵要从左下角走到右上角,只能向上或则向右走,问由多少种走法。套路:计数问题暴力搜索(回溯法)F(n,m)表示棋盘大小为n*m时走法数量F(n,m)=F(n,m−1)+F(n−1,m) if n∗m>0,otherwise F(n,m)=1F(n,m) = F(n,m-1) + F(n-1,m) ~...原创 2019-05-07 21:14:51 · 217 阅读 · 0 评论 -
百练2755--神奇的口袋 DP
题目来源:百练27552755:神奇的口袋查看 提交 统计 提示 提问总时间限制: 10000ms 内存限制: 65536kB描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John...原创 2019-05-10 21:47:25 · 158 阅读 · 0 评论 -
百练2760-数字三角形(DP)
描述图1给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。输入输入的是一行是一个整数N (1 < N <= 100),给出三角形的行数。下面的N行给出数字三角形。数字三角形上的数的范围都在0和100之间。...原创 2019-05-10 22:07:26 · 159 阅读 · 0 评论 -
百练2786 Pell数列--简单DP(递推)
描述Pell数列a1, a2, a3, …的定义是这样的,a1 = 1, a2 = 2, … , an = 2 * an − 1 + an - 2 (n > 2)。给出一个正整数k,要求Pell数列的第k项模上32767是多少。输入第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1 ≤ k < 1000000)。输出n行,每行输出对应一个...原创 2019-05-10 22:59:28 · 199 阅读 · 0 评论 -
【动态规划】
最长上升子序列求一个序列中最长上升子序列的长度最长公共子序列给定两个字符串A和B,求一个字符串,使得这个字符串是A和B的最长公共部分(子序列可以不连续)。最大连续子序列和给定一个数字序列A1,A2,....,AnA_1,A_2,....,A_nA1,A2,....,An,求i,j(1⩽i⩽j⩽n)i,j(1 \leqslant i \leqslant j \...原创 2019-06-29 08:10:57 · 151 阅读 · 0 评论 -
【01背包】 poj 1837 Balance
题目来源:poj 1837题目大意:一个天平,分别给出c个位置和g个钩码的质量,求解所有钩码全部放上时有多少种使天平平衡的方案,输出方案数。样例输入:2 4// 两个位置可放钩码,共四个钩码;-2 3//两个位置为平衡点左边(感性理解一下)第二格和右边第三格;3 4 5 8//四个钩码的质量;样例输出:2//有两种方案;样例解释:把四个钩码按顺序标号为1,2,3,4,则:方案...原创 2019-06-29 10:49:01 · 192 阅读 · 0 评论 -
【多重背包】 二进制优化 poj1276
题目来源:poj1276思路:多重背包,把总金额看作是背包的容量。简单地介绍一下二进制优化:假设数量是8,则可以把它看成是1,2,4,1的组合,即这4个数的组合包括了1-8的所有取值情况。这是为什么呢?将它们转换成二进制再观察一下:1:12:104:1001:1二进制都只有0,1。所以1,2,4已经能够组成1-7的所有情况,但是这样还不够 还要再加一个1 才能凑成8或许有人...原创 2019-06-29 16:14:04 · 255 阅读 · 0 评论 -
【LCS变形】 poj1080
题目来源:poj 1080思路:设dp[i][j]dp[i][j]dp[i][j]表示字符串s1的iii号位和字符串s2的jjj号位之前的字符的最大相似分值。则决定dp[i][j]dp[i][j]dp[i][j]为最优的情况有三种s1取第iii个字母,s2取第jjj个字母:dp[i][j]=dp[i−1][j−1]+score[s1[i]][s2[i]]dp[i][j] =dp[i-1...原创 2019-06-29 22:18:36 · 154 阅读 · 0 评论 -
百练1088滑雪 DFS+记忆化搜索
题目来源:百练 1088总时间限制: 1000ms 内存限制: 65536kB描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 ...原创 2019-05-10 10:22:46 · 116 阅读 · 0 评论 -
1
思路可以先排个序?按照快乐度排序5 1 13 1 110 2 36 1 2【分析】其实是一个背包大小会改变的01背包题,把欢乐度看成价值,持续时间看成重量,发起人离开时间看成背包大小(其实就是这个物品的影响的时间范围,以下简称范围,比较容易理解);因为题目要求bg必须在发起人离开前结束,也就是说选择范围大的物品时必须先选择范围小的物品,这样才可能能获得最大的价值,这里是贪心思想,...转载 2019-05-10 09:19:25 · 111 阅读 · 0 评论 -
动态规划--最大报销额
题目来源:codeup 链接题目描述现有一笔经费可以报销一定额度的发票。允许报销的发票类型包括买图书(A类)、文具(B类)、差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元。现请你编写程序,在给出的一堆发票中找出可以报销的、不超过给定额度的最大报销额。输入测试输入包含若干测试用例。每个测试用例的第1行包含两个正数 Q 和 N,其中 Q(Q<...原创 2019-05-10 08:39:09 · 507 阅读 · 2 评论 -
动态规划--最长连续子序列
这是一道经典DP(动态规划题目)若想找到n个数的最大子段和,那么要找到n-1个数的最大子段和,这就出来了。我们用b[i]b[i]b[i]来表示a[0]...a[i]a[0]...a[i]a[0]...a[i]的最大子段和,b[i]b[i]b[i]无非有两种情况:(1)最大子段一直连续到a[i]a[i]a[i](2)以a[i]a[i]a[i]为首的新的子段。由此我们可以得到b[i]b[...原创 2019-04-27 11:51:44 · 10929 阅读 · 0 评论 -
动态规划笔记(三)
复习动态规划的本质是递归。一切动态规划的问题一定能写成递归的形式。递归的本质就是将原问题拆解为子问题,子问题再推导出原问题。递归里每个参数的组合都表示一个状态。动态规划两个重要性质:最优子结构和重叠子问题。用递归式来处理掉后效性,使它变成无后效性。用空间换时间去除冗余。四个基本解题步骤:3.1 设计暴力算法(递归算法),找到冗余3.2 找到冗余之后,消除冗余(一维数组,二维数组,三维...原创 2019-05-08 10:35:55 · 277 阅读 · 0 评论 -
动态规划笔记(四)
最长公共子序列如何暴力回溯递归int search(int xi,int yi){ if(xi > n || yi > m){ return -1; } if(xi == n && yi == m){ return 0; } int a=0,b=0,c=0; if(X[xi] = Y...原创 2019-05-08 15:41:24 · 155 阅读 · 0 评论 -
Fibonacci--动态规划
题目来源:codeup链接题目描述The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55…} are defined by the recurrence:F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2Write a program to calculate the Fibonacci Numbers.输入Each case cont...原创 2019-05-08 16:36:10 · 434 阅读 · 0 评论 -
最长上升子序列(Longest Increasing Sequence)[LIS]
题目来源:codeup链接题目描述一个数列ai如果满足条件a1 < a2 < … < aN,那么它是一个有序的上升数列。我们取数列(a1, a2, …, aN)的任一子序列(ai1, ai2, …, aiK)使得1 <= i1 < i2 < … < iK <= N。例如,数列(1, 7, 3, 5, 9, 4, 8)的有序上升子序列,像(1, 7...原创 2019-05-08 18:39:32 · 749 阅读 · 0 评论 -
最长公共子序列(LCS)--动态规划
最长公共子序列(Longest Common Sequence,LCS)的问题描述为:给定两个字符串(或数字序列)A和B,求一个字符串,使得这个字符串是A和B的最长公共部分(子序列可以不连续)。样例输入abcfbc abfcabprogramming contestabcd mnp样例输出420思路:令dp[i][j]dp[i][j]dp[i][j]表示字符串A的i...原创 2019-05-08 21:27:50 · 110 阅读 · 0 评论 -
动态规划--01背包
题目一: codeup装箱问题题目描述【问题描述】有一个箱子的容量为V(V为正整数,且满足0≤V≤20000),同时有n件物品(0的体积值为正整数。要求从n件物品中,选取若干装入箱内,使箱子的剩余空间最小。输入:1行整数,第1个数表示箱子的容量,第2个数表示有n件物品,后面n个数分别表示这n件物品各自的体积。输出:1个整数,表示箱子剩余空间。【输入输出样例】输入:24 6 8...原创 2019-05-09 16:05:49 · 165 阅读 · 0 评论 -
动态规划--完全背包问题
题目来源: codeup 动态规划专题 货币系统题目描述母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统。[In their own rebellious way],,他们对货币的数值感到好奇。传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。举例来说, 使用一个货...原创 2019-05-09 19:24:40 · 326 阅读 · 0 评论 -
动态规划笔记(一)
转载自:https://blog.csdn.net/fisherming/article/details/79809071动态规划本质:递归递归的意义在于将原问题(N)拆解为子问题(N-1),用子问题得到答案之后综合得到原问题(N)的答案。leetcode 198题目描述:你是一个专业的强盗,计划抢劫沿街的房屋。每间房都藏有一定的现金,阻止你抢劫他们的唯一的制约因素就是相邻的房屋有保...转载 2019-05-07 11:11:26 · 175 阅读 · 0 评论 -
动态规划--放苹果
题目来源: codeup 链接 &&poj 1664题目描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。输入第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。输出对输入的每组数据M和N,用...原创 2019-05-09 21:33:27 · 290 阅读 · 0 评论 -
【动态规划】 上楼梯进阶版
题目来源:百练 上楼梯D:上楼梯查看 提交 统计 提问总时间限制: 1000ms 内存限制: 128kB描述小S在玩一个叫上楼梯的游戏。楼梯一共有n层台阶。因为腿长的限制,小S每次最多只能上k层台阶。小S是一个迷信的人,所以他不希望自己某一步走的步数的数字里有"4",(比如4,14,44都含有数字"4")。现在,小S想要知道,有多少种走完这n层台阶的方案?输入输入包含多组数据。...原创 2019-07-06 09:50:55 · 1422 阅读 · 0 评论