![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Kuany_
这个作者很懒,什么都没留下…
展开
-
类似背包问题,允许超过容量的最小价值
第一行输入n和m,代表物品个数和最大容量余下n行输入n组物品v w代表物品的价值和容量输出物品能超出一定容量的最小价值和其容量例如输入6 370025 360022 180010 9006 6004 3001 60输出27 3720#include <cstdio>#include <cstring>#include <algorithm>#define ll long long const int inf = 0x3f3f3原创 2021-04-01 17:29:21 · 1001 阅读 · 4 评论 -
经典背包问题3——背包问题求方案数 、背包问题求具体方案
经典背包问题3——背包问题求方案数 、背包问题求具体方案1. 背包问题求方案数2. 背包问题求具体方案1. 背包问题求方案数有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N行,每行两个整数 vi,wi,用空格隔原创 2020-08-20 00:38:20 · 2412 阅读 · 0 评论 -
经典背包问题2——混合背包问题、二维费用的背包问题、分组背包问题
经典背包问题2——混合背包问题、二维费用的背包问题、分组背包问题1. 混合背包问题2. 二维费用的背包问题3. 分组背包问题1. 混合背包问题有 N 种物品和一个容量是 V的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和原创 2020-08-19 14:42:45 · 645 阅读 · 0 评论 -
leetcode 思路——64. 最小路径和——174. 地下城游戏
leetcode 思路——64. 最小路径和——174. 地下城游戏64. 最小路径和174. 地下城游戏64. 最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。动态规划思路:我们可以设dp[i][j]的意思为到达第i行第j列的最短路径和依次从左到右,从原创 2020-08-17 23:25:10 · 450 阅读 · 0 评论 -
leetcode 思路——300. 最长上升子序列
leetcode 思路——300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。动态规划思路:确定状态,dp[i]为0到第i个子序列的最长上升的长度;我们先固定右端点(右端点也要慢慢往右移),然后根据右端点,找出左端点到原创 2020-08-17 18:07:31 · 467 阅读 · 0 评论 -
经典背包问题1——01背包问题、完全背包问题、多重背包问题(数据范围100)、多重背包问题(数据范围1000/2000)
经典背包问题——01背包问题有 N 件物品和一个容量是 V的背包。每件物品只能使用一次。第 i件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例原创 2020-08-05 10:33:37 · 1534 阅读 · 0 评论 -
leetcode 思路——322. 零钱兑换、518. 零钱兑换 II
leetcode 思路——322. 零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1来源:力扣(LeetCode)链接:https://leetcode-cn.com/原创 2020-08-05 00:33:45 · 257 阅读 · 0 评论 -
leetcode 思路——647. 回文子串
leetcode 思路——647. 回文子串给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: “abc”输出: 3解释: 三个回文子串: “a”, “b”, “c”.示例 2:输入: “aaa”输出: 6说明: 6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”.注意:输入的字符串长度不会超过1000。来源:力扣(LeetCode)链接:ht原创 2020-08-04 23:47:04 · 219 阅读 · 0 评论 -
leetcode 思路——53. 最大子序和
leetcode 思路——53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray动态规划思想:我们先给dp进行下定义,可以理解为dp[i]的意义是当子数组的原创 2020-08-04 18:36:57 · 188 阅读 · 0 评论 -
leetcode 思路——120. 三角形最小路径和
leetcode 思路——120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/t原创 2020-08-04 20:27:09 · 185 阅读 · 0 评论