![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP经典题
骓不逝兮
如果不努力,你还能干嘛
展开
-
最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring著作权归领扣网络所有。..原创 2021-03-31 23:46:31 · 166 阅读 · 0 评论 -
添加括号
题目描述现在要添上n-1对括号,加法运算依括号顺序进行,得到n-1个中间和,求出使中间和之和最小的添括号方法。输入数据共两行。第一行,为整数nn。(1≤n≤20)第二行,为a(1),a(2),...,a(n) 这n个正整数,每个数字不超过100。输出数据输出3 行。第一行,为添加括号的方法。第二行,为最终的中间和之和。第三行,为n−1 个中间和,按照从里到外,从左到右的顺序输出。样例输入44 1 2 3样例输出(4+((1+2)...原创 2020-11-16 16:34:11 · 894 阅读 · 0 评论 -
滑雪问题
题目描述 顺治喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你。顺治想知道载一个区域中最长的滑坡。 区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 顺治可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中.原创 2020-11-15 22:45:47 · 377 阅读 · 0 评论 -
小胖办证
题目描述xuzhenyi要办个签证。办证处是一座M层的大楼,1< =M< =100。每层楼都有N个办公室,编号为1..N(1< =N< =500)。每个办公室有一个签证员。签证需要让第M层的某个签证员盖章才有效。每个签证员都要满足下面三个条件之一才会给xuzhenyi盖章:这个签证员在1楼 xuzhenyi的签证已经给这个签证员的正楼下(房间号相同)的签证员盖过章了。 xuzhenyi的签证已经给这个签证员的相邻房间(房间号相差1,楼层相同)的签证员盖过章了。每.原创 2020-11-15 21:53:10 · 441 阅读 · 0 评论 -
晴天小猪历险记之Hill
题目描述 这一天,他来到了一座深山的山脚下,因为只有这座深山中的一位隐者才知道这种药草的所在。但是上山的路错综复杂,由于小小猪的病情,晴天小猪想找一条需时最少的路到达山顶,但现在它一头雾水,所以向你求助。 山用一个三角形表示,从山顶依次向下有1段、2段、3段等山路,每一段用一个数字T(1< =T< =100)表示,代表晴天小猪在这一段山路上需要爬的时间,每一次它都可以朝左、右、左上、右上四个方向走(注意:在任意一层的第一段也可以走到本层的最后一段或上一层的最后一段)。 晴天小猪从.原创 2020-11-15 21:40:35 · 846 阅读 · 0 评论 -
魔力数
题目描述如果一个数字模m等于k(即该数字除以m余数为k),则称这个数字为魔力数 现在魔法师jrq有一个十进制下的n位数,初始每个数位都是0,jrq有d点魔力,他每花费1点魔力可以使这个n位数的某一位加1,但不能超过9(即最大只能加到9),jrq可以不花光他的所有魔力,问jrq可以得到多少种不同的魔力数 魔力数可以有前导零输入数据四个正整数,分别代表n,d,m,k 1<=n<=10 1<=d<=15 1<=m<=1000000007 0<=k<m.原创 2020-11-15 15:58:00 · 594 阅读 · 0 评论 -
4-Hanoi-Tower
题目描述“汉诺塔”,是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有4根柱子, 而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢?为了编程方便,您只需要输出这个结果mod 10000的值。输入数据一个正整数nn。(0<n<5×10^3)输出数据一个正整数,表示把nn个盘子从第1 根柱子移动到第4 根柱子需要的最少移动次数mod10^{4}的值。样例输入2样例输出4解...原创 2020-11-13 17:36:59 · 281 阅读 · 0 评论 -
买蛋糕
题目描述 野猫过生日,大家当然会送礼物了(咳咳,没送礼物的同志注意了哈!!),由于不知道送什么好,又考虑到实用性等其他问题,大家决定合伙给野猫买一个生日蛋糕。大家不知道最后要买的蛋糕的准确价格,而只会给蛋糕估价,即要买一个不超过多少钱的蛋糕。众OIer借此发挥:能否用最少的钱币数去凑成估价范围内的所有价值,使得不管蛋糕价值多少,都不用找钱…… 现在问题由此引出:对于一个给定的n,能否用最少的不等的正整数去组成n以内(包括n)的所有的正整数呢?如果能,最少需要多少个正整数,用最少个数又有多少不同的.原创 2020-11-13 16:32:19 · 323 阅读 · 0 评论 -
数的划分
题目描述将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法。输入数据输入n,k(6<n≤200,2≤k≤6)n,k(6<n≤200,2≤k≤6)输出数据一个整数,即不同的分法。样例输入7 3样例输出4解析:动态规划,dp[i][j] 表示 数字 i,被分解为 j 份 的方案总数状态转移方程:dp[i...原创 2020-11-13 10:05:04 · 2598 阅读 · 2 评论 -
采药
题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务吗?输入数据 输入的第一行有两个整数T(1≤T≤1000)T(1≤...原创 2020-11-13 09:47:54 · 133 阅读 · 0 评论 -
Warcraft III 守望者的烦恼
题目描述头脑并不发达的warden最近在思考一个问题,她的闪烁技能是可以升级的,k级的闪烁技能最多可以向前移动k个监狱,一共有n个监狱要视察,她从入口进去,一路上有n个监狱,而且不会往回走,当然她并不用每个监狱都视察,但是她最后一定要到第n个监狱里去,因为监狱的出口在那里,但是她并不一定要到第1个监狱。守望者warden现在想知道,她在拥有k级闪烁技能时视察n个监狱一共有多少种方案?输入数据第一行是闪烁技能的等级k(1≤k≤10)第二行是监狱的个数n(1≤n≤2^31−1)输...原创 2020-11-13 09:41:54 · 1020 阅读 · 0 评论 -
小明的打工计划
题目描述作为一个有很多游戏想买但囊中羞涩的大学生,小明决定在这个暑假开始打工赚钱。经过一段时间的寻找,他一共找到了n个打工的招聘广告,其中第i个打工的日期从li开始,到ri为止,一共付给他ci元钱。因为这些打工的时间都相互冲突,所以同一天小明最多参加一个打工,并且一个打工一旦开始,就必须一直工作到结束,不能中途退出。现在小明想要知道,这个暑假他打工最多能得到多少钱?输入数据第一行一个整数n(1≤n≤1000000),表示招聘广告的数量。 接下来一共n行,每行3个整数li,ri,ci(1≤li≤.原创 2020-11-12 16:19:08 · 1177 阅读 · 0 评论 -
多行最大子矩阵和问题
题目描述:给定N×N矩阵,矩阵元素都是-127到+127之间的整数。请找到一个子矩阵,使得其元素之和最大。例如给定4*4矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 最大子矩阵为 9 2 -4 1 -1 8 最大子矩阵和为9+2+(-4)+1+(-1)+8 = 15.输入数据:多组测试数据,每组测试数据的第一行整数 N (N<=100)。接下来N行元素,每行N个元素,每个元素介于-127到127之间。输出数据:最大子矩阵元素之和,每组测试数据.原创 2020-11-12 13:08:48 · 653 阅读 · 0 评论 -
邮票问题
题目描述: 给定一个信封,最多只允许粘贴N张邮票,计算在给定M(N+M< =10)种邮票的情况下(假定所有的邮票数量都足够),如何设计邮票的面值,能得到最大max ,使得1~max之间的每一个邮资值都能得到。例如,N=3,M=2,如果面值分别为1分、4分,则在l分~6分之间的每一个邮资值都能得到(当然还有8分、9分和12分):如果面值分别为1分、3分,则在1分~7分之间的每一个邮资值都能得到。可以验证当N=3,M=2时,7分就是可以得到连续的邮资最大值,所以MAX=7,面值分别为l分、3分。.原创 2020-11-11 11:37:27 · 896 阅读 · 0 评论 -
最长公共子序列
给定两个序列求他们最长相同的子序列的长度。 例如:A={a,b,c,h,e,f} B={a,e,b,h,d,f}的最长公共子序列为{a,b,h,f},长度为41.定义子状态: dp[i][j]表示A序列前i项和B序列前j项的最长公共子序列的长度 2.状态转移: (1)a[i] = b[j]时,dp[i][j] = dp[i-1][j-1]+1 比如原创 2020-06-01 21:16:57 · 146 阅读 · 0 评论 -
最大子序列和
子序列:可以不连续,但是要保证出现的顺序与原字符串相同给定一个整数序列A1,A2……An。求最大的连续的子序列的和。 比如{1,-2,3,1,-1,2}的最大连续子序列的和为5(3+1-1+2)1.定义状态: dp[i]表示以a[i]为结尾的连续子序列的最大和 2.状态转移: if(dp[i-1]>0) dp[i]=dp[i-1]+a[i]; else dp[i]=...原创 2017-08-10 19:56:56 · 455 阅读 · 0 评论 -
数塔
dp的经典题 解题的关键在于如何确定子状态以及状态转移方程。数塔在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 1原创 2017-08-11 09:49:38 · 194 阅读 · 0 评论 -
逆序数
逆序数1 定义: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那末它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。1-n的全排列中,逆序数最小为0(正序),最大为n*(n-1) / 2(倒序)2 求逆序数的算法:方法一: (O原创 2017-08-11 11:11:22 · 9398 阅读 · 1 评论 -
最长递增子序列延伸
Once againYou are given an array of positive integers a1, a2, …, an × T of length n × T. We know that for any i > n it is true that ai = ai - n. Find the length of the longest non-decreasing sequence o原创 2017-08-18 19:25:37 · 562 阅读 · 0 评论 -
最长递增子序列
给出长度为N的数组,找出这个数组的最长递增子序列的长度。 (递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。1.定义状态: dp[i]表示以a[i]为结尾的最长递增子序列的长度。i= 1时,{5} dp[1] = 1 i= 2时, {1} dp[2] = 1 i= 3时,{6},{5,6} {1原创 2017-08-10 21:07:33 · 216 阅读 · 0 评论