动态规划
文章平均质量分 58
深街酒徒*
专业气氛组成员
展开
-
动态规划之背包问题
常见的背包问题有三种:0/1背包,完全背包,多重背包。背包容量:total。 物品数量:n。 第i件物品重量:w[i]。 第i件物品价值:v[i]。处理思路:二维dp转一维dp,打表处理。0/1背包:在做某一轮(某一物品)处理时,需要考虑上一轮时拥有的情况,需要在上一轮基础减去w[i],相当于为下一件物品所腾出了 w[i] 的空间。即二维dp:dp[i][j] = max(dp[i - 1][j] , dp[i - 1][j - w[i]] + v[i])优化为一维滚动dp:d原创 2021-10-11 20:31:07 · 156 阅读 · 0 评论 -
895. 最长上升子序列 Java题解 (dp)
dp[i] = j :表示以arr[i]结尾的最长上升子序列的长度是j。dp[i] = max (dp[i] , dp[j]+1).求长度:pre[i] = j :表示arr[i]的前一个数是arr[j].原创 2022-03-24 19:04:11 · 900 阅读 · 0 评论 -
1015. 摘花生 Java题解 (dp)
dp[i][j]:表示在第i行第j列时摘到的最大花生数。状态方程:dp[i][j] = dp[i-1][j] + dp[i][j+1]原创 2022-03-24 16:09:40 · 182 阅读 · 0 评论 -
2. 01背包问题 Java 题解 (dp)
dp原创 2022-03-24 13:00:13 · 429 阅读 · 0 评论 -
算法提高 合唱队形 java 题解 348
问题描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。 你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入格式 输入的第一行是一个整数N(2<=N<=10原创 2022-02-10 08:00:00 · 210 阅读 · 0 评论 -
算法提高 最长递增子序列 java 题解 591
问题描述 给定一个序列,求解它的最长递增子序列的长度。比如:给定序列[10, 9, 2, 5, 3, 7, 101, 18],它的最长递增子序列是[2, 3, 7, 101],所以最长递增子序列的长度为4。最长递增子序列的组合方式可能不唯一,只需要返回其长度。 请编写一个程序,实现上述功能。(可以考虑不同的时间复杂度实现,比如O(n^2)和O(nlogn)等,注意清橙上判断输入结束用EOF,提交时用'\n')输入格式 输入一个整数序列。(输入序列长度不超过100)输出格式 最长原创 2022-02-09 08:00:00 · 578 阅读 · 0 评论 -
最长递增子序列 (LIS)动态规划,贪心+二分 (java版)
最长递增子序列,动态规划,贪心,二分查找,binarysearch()的使用,java原创 2022-02-08 08:00:00 · 416 阅读 · 0 评论 -
01背包 144 java 题解
问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.输入格式 输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。 以后N行每行两个数Wi和Vi,表示物品的重量和价值输出格式 输出1行,包含一个整数,表示最大价值。样例输入3 52 33 54 7样例输出8数据规模和约定 1<=N<=200,M<=5000.解题思路:01背原创 2021-10-11 23:59:50 · 147 阅读 · 0 评论 -
入学考试 030 java 题解
问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。” 如果你是辰辰,你能完成这个任务吗?输入格式 第一行有两个整数T(1 <= T <= 1000原创 2021-10-11 18:56:40 · 126 阅读 · 0 评论 -
完全背包问题 857 java题解
问题描述 有一個背包,容量為M。有N種物品,每種物品有其體積Wi與價值Vi。將這些物品的一部分放入背包,每種物品可以放任意多個,要求總體積不超過容量,且總價值最大。输入格式 第一行為N, M。 之後N行,每行為Wi, Vi。输出格式 一個數,為最大價值。样例输入3 2015 166 67 5样例输出18数据规模和约定 N, M<=1000。解题思路:输入时是无序给的一些物品重量和物品价值,需要先排序存放至数组中,转换成常规问题求解。原创 2021-10-11 12:05:56 · 264 阅读 · 0 评论 -
1007 Maximum Subsequence Sum (25 分) java 题解
Given a sequence ofKintegers {N1,N2, ...,NK}. A continuous subsequence is defined to be {Ni,Ni+1, ...,Nj} where1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given seq...原创 2021-10-04 01:00:36 · 147 阅读 · 0 评论 -
1040 Longest Symmetric String (25 分) java 题解
Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, givenIs PAT&TAP symmetric?, the longest symmetric sub-string iss PAT&TAP s, hence you must output11.Input Specification:Each input file c...原创 2021-10-02 18:55:47 · 156 阅读 · 0 评论 -
7-10 最长公共子序列长度 java 题解
题目描述:求两个字符串的最长公共子序列长度。输入格式:输入长度≤100的两个字符串。输出格式:输出两个字符串的最长公共子序列长度。输入样例1:ABCBDABBDCABA输出样例1:4输入样例2:ABACDEFPGHIK输出样例2:0解题思路:子序列区别于子串,前者可以不连续但不能乱了顺序,后者为连续的字符串。求两串的最长公共子序列长度,可以分别将两字符串想象为二维数组的行和列,先将左右边界置为0,当某一位置dp[i][j]相等时,将原创 2021-10-02 00:13:14 · 702 阅读 · 0 评论 -
7-9 切原木问题 java 题解
给定一根长度为N米的原木;另有一个分段价格表,给出长度L1,L2,...Li,...Lk米所对应的价格P1,P2...Pk(Li,Pi均为正整数),求切割原木分段出售所能获得的最大收益。 例如,根据下面给出的价格表,Li 1 2 3 4 5 6 7 8 9 10 Pi 1 5 8 9 10 17 17 20 23 28 若要出售一段8米长的原木,最优解是将其切割为2米和6米的两原创 2021-10-10 23:51:21 · 544 阅读 · 0 评论 -
7-8 最大子段和 java 题解
题目描述:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。输入格式:输入有两行:第一行是n值(1<=n<=10000);第二行是n个整数。输出格式:输出最大子段和。输入样例:在这里给出一组输入。例如:6-2 11 -4 13 -5 -2输出样例:在这里给出相应的输出。例如:原创 2021-10-01 20:05:35 · 208 阅读 · 0 评论 -
7-6 最短路径条数 java 题解
题目描述:在一个m行n列的网格中,每个网格的各边的长度均相等,求由A(x1,y1)点到达B(x2,y2)点的最短路径条数,其中1<=m,n<=30。输入保证x2>=x1,y2>=y1 如有下图网格,起点和终点分别是A(1,1),B(2,3) 则最短路线是: (1,1)->(1,2)->(1,3)->(2,3) (1,1)->(2,1)->(2,2)->(2,3) (1,1(->(1,2)-&g原创 2021-10-01 19:44:29 · 648 阅读 · 0 评论 -
7-4 矩阵的最小路径和 java题解
题目描述:给定一个矩阵matrix,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。输入格式:第一行为两个数字m和n(1≤m, n≤1000),分别表示矩阵的行数和列数。接下来有m行,每行n个数字,数字之间用一个空格分隔。每个数字的值为不超过200的非负整数。输出格式:在一行中输出从左上角到右下角所有的路径中最小的路径和。输入样例:4 41 3 5 98 1 3 45 0 6 18 8 4原创 2021-10-01 18:07:49 · 510 阅读 · 0 评论