LintCode-背包问题 II

给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大?

样例

对于物品体积[2, 3, 5, 7]和对应的价值[1, 5, 2, 4], 假设背包大小为10的话,最大能够装入的价值为9。

注意

A[i], V[i], n, m均为整数。你不能将物品进行切分。你所挑选的物品总体积需要小于等于给定的m。

分析:最原始的01背包问题。

代码:

class Solution {
public:
    /**
     * @param m: An integer m denotes the size of a backpack
     * @param A & V: Given n items with size A[i] and value V[i]
     * @return: The maximum value
     */
    int backPackII(int m, vector<int> A, vector<int> V) {
        // write your code here
        int* dp = new int[m+1];
        fill(dp,dp+m+1,0);
        int ret = 0;
        for(int i=0;i<A.size();i++)
        {
            for(int j=m;j>=A[i];j--)
            {
                dp[j] = max(dp[j],dp[j-A[i]]+V[i]);
                ret = max(ret,dp[j]);
            }
        }
        return ret;
    }
};
时间: 2024-10-17 00:23:05

LintCode-背包问题 II的相关文章

【动态规划】简单背包问题II

问题 B: [动态规划]简单背包问题II 时间限制: 1 Sec  内存限制: 64 MB提交: 21  解决: 14[提交][状态][讨论版] 题目描述 张琪曼:“为什么背包一定要完全装满呢?尽可能多装不就行了吗?” 李旭琳:“你说得对,这和墨老师曾告诉我们的‘日中则昃,月满则亏’是一个道理.”所以,现在的问题是,她们有一个背包容量为v(正整数,0≤v≤20000),同时有n个魔法石(0≤n≤30),每个魔法石有一个体积 (正整数).要求从n个魔法石中,任取若干个装入包内,使背包的剩余空间为最

多重背包问题II

多重背包问题II 总体积是m,每个小物品的体积是A[i] ,每个小物品的数量是B[i],每个小物品的价值是C[i] 求能够放入背包内的最大物品能够获得的最大价值 和上一个很类似 上一题体积就是价值,这里的价值是单独定义了 状态转移方程 不放A[i] f[i][j] =f[i-1][j] 放A[j] 可放多个设为k, k = min(j/A[i],B[i]) f[i][j] = f[i-1][j- ki*A[i]] + ki*C[i] 0<=ki<=k 取最大值 完全背包问题时候:0<=k

九章算法面试题59 背包问题II

九章算法官网-原文网址 http://www.jiuzhang.com/problem/59/ 题目 有一个大小为m(整数)的背包,和n个体积(大小分别为A[i](整数))和价值(价格分别为B[i](整数))的物品.将这n个物品选一些装到背包中,请问能装价值最大为多少的物品? 在线测试本题 http://www.lintcode.com/en/problem/backpack-ii/ 解答 设F[i][j]为前i个物品,选一些组成j的体积,能够获得最大的价值是多少.状态转移方程:f[i][j]

LintCode : Permutations II

import java.util.Collections; class Solution { /** * @param nums: A list of integers. * @return: A list of unique permutations. */ public ArrayList<ArrayList<Integer>> permuteUnique(ArrayList<Integer> nums){ // write your code here Array

动规基础——01背包问题(背包问题Ⅱ)

题目来源:领扣 | LintCode 有 i 个物品和一个总容量为 j 的背包. 给定数组 weight 表示每个物品的重量和数组 value 表示每个物品的价值,求最大价值.(物品不能分割) 背包问题II 这道题是一道动态规划(dp)算法的基础题,有两种实现方式,分别是递归和递推(迭代),前者比后者好理解. 解题思路 首先,题目的要求是找出最大价值,所以我们要想,怎么存放才能让他的价值最大呢?因为物品具有重量,背包容量也有限,所以我们不能每次都放入最大价值的物品,举个例子,假设背包容量为 10

92 背包问题

原题网址:https://www.lintcode.com/problem/backpack/description 描述 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i] 你不可以将物品进行切割. 您在真实的面试中是否遇到过这个题?  是 样例 如果有4个物品[2, 3, 5, 7] 如果背包的大小为11,可以选择[2, 3, 5]装入背包,最多可以装满10的空间. 如果背包的大小为12,可以选择[2, 3, 7]装入背包,最多可以装满12的空间.

[算法专题] 深度优先搜索&amp;回溯剪枝

1. Palindrome Partitioning https://leetcode.com/problems/palindrome-partitioning/ Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. For example, given s = "aab&

经典背包系列问题

背包问题I   试题描述 有一个背包容积为 V 和 n 个物品,并给出每个物品有一个体积.要求从 n 个物品中,任取若干个装入背包内,使背包的剩余空间为最小. 输入 第一行两个正整数 V 和 n,分别表示背包的容积和待装物品的个数:第二行包括 n 个正整数,表示 n 个物品的体积,两两之间有一个空格分隔. 输出 一个数,表示背包中剩余空间的最小值 输入示例 24 68 3 12 7 9 7 输出示例 0 其他说明 数据范围:0<V≤20000,0<n≤30 背包问题II   试题描述 仍然是背

[LintCode] Trapping Rain Water II

Trapping Rain Water II Given n x m non-negative integers representing an elevation map 2d where the area of each cell is 1 x 1, compute how much water it is able to trap after raining. Example Given 5*4 matrix [12,13,0,12] [13,4,13,12] [13,8,10,12] [

lintcode 最长上升连续子序列 II(二维最长上升连续序列)

题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最长上升连续子序列 II 给定一个整数矩阵(其中,有 n 行, m 列),请找出矩阵中的最长上升连续子序列.(最长上升连续子序列可从任意行或任意列开始,向上/下/左/右任意方向移动). 样例 给定一个矩阵 [ [1 ,2 ,3 ,4 ,5], [16,17,24,23,6], [15,18,25,22,7], [14,1