有一只容量为 V 的购物袋,同时他买了 n 件物品,已知每件物品的体积 vi 。
挑选哪些物品放入购物袋中,可以使袋子剩余的空间最小。

输入格式
第一行输入一个整数 V(1≤V≤20,000),表示购物袋的容量。
第二行输入一个整数 n(1≤n≤30),表示蒜头君购买的 n 件物品。
接下来输入 n 行,每行输入一个整数 vi(1≤vi≤10,000),表示第 i 件物品的体积。
输出格式
输出一行,输出一个整数,表示购物袋最小的剩余空间。

求剩余空间最小,即求选择的物品体积之和最大

dp[i][j]表示前i件物品选若干个,放入容量为j的购物袋中,所得的最大体积

考虑第i个物品选或者不选

j-v[i]<0:
   购物袋容量放不下第i个物品,第i个物品不能选
   dp[i][j]=dp[i-1][j]
j-v[i]>=0:
   第i个物品选:
     dp[i][j]=dp[i-1][j-v[i]]+v[i]
   第i个物品不选:
     dp[i][j]=dp[i-1][j]

空间优化:

for(i=1;i<=N;i++)

for(j=V;j>=v[i];j--)

dp[j]=max(dp[j],dp[j-v[i]]+v[i])

【动态规划】01背包问题:购物袋相关推荐

  1. 动态规划—01背包问题

    原文作者:弗兰克的猫 原文地址:[动态规划]01背包问题 摘要: 01背包问题:n个物品放入容量为c的背包中. 常见解法: 分治法:递归计算,且存在重复计算的bug 自上而下填表法:从大到小使用递归计 ...

  2. 动态规划——0-1背包问题

    文章出处:极客时间<数据结构和算法之美>-作者:王争.该系列文章是本人的学习笔记. 1 0-1背包问题 背包能够承受的总重量一定w,每个物品的总量不同int[] weight表示.怎么放才 ...

  3. 动态规划——01背包问题 看此一篇文章就够了

    本文讲述经典算法--动态规划的 常见问题 01背包  一篇文章带你学会01背包问题,妈妈再也不担心我遇到01背包了!!! 问题描述 有n个物品,它们有各自的体积和价值,现有给定容量m的背包,如何让背包 ...

  4. 动态规划---01背包问题(2种方法)

    一.动态规划 代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法 本质:递推,核心是找到状态转移的方式,写出dp方程. 解决问题:交叉,重叠子问题(最优子问题) 形式 ...

  5. 动态规划01背包问题入门学习,详细笔记,推荐阅读

    问题描述: 给定N种物品和一个背包.物品i的重量是Wi,其价值位Vi ,背包的容量为C.问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?? 在选择物品的时候,对每种物品i只有两种选择, ...

  6. python实现动态规划0-1背包问题

    一.动态规划算法介绍 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解.动态规划算法与分治法类似,其基本思想也是将待 ...

  7. 详解动态规划01背包问题--JavaScript实现

    对其他动态规划问题感兴趣的,也可以查看 详解动态规划最少硬币找零问题--JavaScript实现 详解动态规划最长公共子序列--JavaScript实现 一开始在接触动态规划的时候,可能会云里雾里,似 ...

  8. 动态规划--01背包问题详解

    代码随想录day42和day43 动态规划 模块01背包问题 "即使到不了远方,心中也要有远方的模样." 文章目录 1. 01背包理论基础 1.1什么是背包问题 1.2二维dp数组 ...

  9. 1.动态规划--01背包问题

    动态规划 DP问题思考时候分成两大部分考虑 1. 状态表示 f(i,j) (1) 集合:(所有选法的集合) 所有选法 条件: 1.从前i个物品中选 2. 总体积m<=j (2) 属性 最大值.最 ...

  10. 动态规划-01背包问题

    大佬整理的理解链接:(建议先看一遍自行理解DP思想再去看代码) 动态规划之01背包问题 - kkbill - 博客园01背包问题 问题描述: 给定 n 件物品,物品的重量为 w[i],物品的价值为 c ...

最新文章

  1. 关于软件开发的随想,纯属意淫
  2. let's encrypt部署免费泛域名证书
  3. Python应用实战案例-pyspark库从安装到实战保姆级讲解
  4. Android中通过数组资源文件xml与适配器两种方式给ListView列表视图设置数据源
  5. 深入理解Linux内存管理--目录导航
  6. CRM Fiori Opportunity应用的新建Opportunity操作的实现
  7. 小程序 --- Tab组件的封装
  8. 什么叫诚实_他爱不爱你,身体最诚实
  9. Broadcast简单使用
  10. 记一次阿里巴巴一面的经历
  11. pthread_cancel()与pthread_cancel
  12. 主成分分析(Principal components analysis)(特征降维)(PCA)-最大方差解释
  13. 十大著名黑客——斯蒂芬-沃兹尼克
  14. 深度学习之四大经典CNN技术浅析
  15. MicroMsg.SDK.WXMediaMessage: checkArgs fail, thumbData is invalid
  16. LeetCode 刷题记录模板
  17. CodeBook算法
  18. 【词性标注】一篇文章弄懂词性标注
  19. context deadline exceeded
  20. draco安装与测试

热门文章

  1. iOS应用开发模板 iOS Boilerplate
  2. 最近做了个数据采集的工具
  3. CCF201712-5 商路(60分题解链接)
  4. UVA10880 Colin and Ryan【整除】
  5. Python程序-输出1000以内素数
  6. 计算机设计思想 —— 类比、建模与隐喻(同构)
  7. 找规律 —— 英文篇
  8. 数据集可视化——tile(贴砖)
  9. fpga多摩川编码器开源代码_F28379D之CLB解码多摩川编码器1——入手小知识(原创)...
  10. 开课吧里的python学习是真的吗-明星为开课吧直播带货:人人都要学,人人都可以学的Python...