第i件物品的价值为c[i],重量为w[ i ],每种物品都有无限件可用

求将哪些物品装入背包可以使得价值总和最大

同01背包问题:

dp[i][j]表示从前i个物品中选出若干个物品,放入容量为j的背包中,能获得的最大价值

状态转移方程:

dp[i][j]=max(dp[i-1][j-k*w[i]]+k*c[i]) 0 <= k * w[i] <= j


int dp[n+1][m+1];//下标从1开始
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)int res=-1;for(int k=0;k*w[i]<=j;k++)res=max(res,dp[i-1][j-k*w[i]]+k*c[i]);dp[i][j]=res;cout<<dp[n][m];
#include<iostream>
#include<cstring>
using namespace std;
int dp[31][201];
int m,n;
int w[31];
int c[31];
void input()
{cin>>m>>n;for(int i=1;i<=n;i++){cin>>w[i]>>c[i];}
}
int main()
{input();memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int res=-1;for(int k=0;k*w[i]<=j;k++)res=max(res,dp[i-1][j-k*w[i]]+k*c[i]);dp[i][j]=res;}}cout<<"max="<<dp[n][m];
}

空间优化:

优化后的代码:

 for(int i=1;i<=N;i++){for(int j=c[i];j<=V;j++){dp[j]=max(dp[j-c[i]]+w[i],dp[j]);}}cout<<dp[V]<<endl;

【动态规划笔记】完全背包问题及优化相关推荐

  1. 机试指南第七章-动态规划-笔记及背包问题

    第七章     动态规划 一.递归求解: 递归问题的关键是解决初始值和递推公式,从而将复杂问题分解为简单问题直至初始值对应的极简问题,从而得到答案. 套路:初始值+递归公式. Trick:将求出的值存 ...

  2. 【动态规划笔记】背包问题:搬寝室

  3. 经典动态规划:0-1 背包问题

    经典动态规划:0-1 背包问题 文章目录 经典动态规划:0-1 背包问题 一.题目描述 二.动规标准套路 三.题目描述 四.解法分析 五.优化 一.题目描述 就讨论最常说的 0-1 背包问题,简单描述 ...

  4. 【算法】动态规划笔记

    [算法]动态规划笔记 动态规划: 将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解 动态规划会将每个求解过的子问题的解记录下来,这样下一次碰到同样的子问题时,就可以直接使 ...

  5. 动态规划:由背包问题入门1

    #解题思路由y总提供 目录 NO.1 01背包问题 NO 2 完全背包问题 动态规划是我们c++学习中不可避免且相对棘手的问题,正所谓,吾后院有枇杷树,初学动规时手植也,今已亭亭如盖矣...,动规最大 ...

  6. 背包问题动态规划matlab,01背包问题动态规划详解

    计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...

  7. o-1背包问题迭代_经典动态规划:01背包问题的变体

    点击上方蓝字设为星标 东哥带你手把手撕力扣~ 作者:labuladong   公众号:labuladong 若已授权白名单也必须保留以上来源信息 上篇文章 经典动态规划:0-1 背包问题 详解了通用的 ...

  8. TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

    TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...

  9. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析

    // 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...

  10. 算法导论——动态规划:0-1背包问题(完全解)

    2019独角兽企业重金招聘Python工程师标准>>> package org.loda.dynamic;import org.junit.Test;/*** * @ClassNam ...

最新文章

  1. 极客新闻——16、数据库设计中的5个常见错误
  2. 如何提高lstm的预测精度_如何提高失重秤的喂料精度?你需要了解这些!
  3. 安卓10省电还是费电_拍照成罪魁祸首 安卓十大耗电App排行公布
  4. 短信猫前台群发短信的示例程序
  5. absolute 必须 relative_想搞BLDC电机控制,就必须要懂的角度传感器
  6. 静态代理和动态代理的区别,什么场景使用?
  7. 四月之 诗四首和五十六句话
  8. 2018年3大UI设计趋势,你知道吗?
  9. linux下bcd文件还原,BCDEDIT命令详解 | 数据恢复实验室 Data Recovery Laboratory
  10. .net微信扫码支付
  11. pta——出生年,查验身份证(c语言)
  12. 微信王者服务器怎么删掉,王者荣耀怎么删除微信好友 又快又好
  13. 下载视频网站视频的方法
  14. 【iframe结合pdf.js实现pdf的预览/下载及打印功能】
  15. 安装nvida-docker2
  16. Fifth week
  17. 计算机毕业设计、小程序毕业设计答辩PPT参考
  18. 向量的几何意义及编程应用(1)
  19. 浙江大学计算机考研机试KY132 xxx定律
  20. 电脑城 SUN GHOST WIN7 SP1 旗舰装机版V1.0

热门文章

  1. Bailian2685 打印水仙花数【进制+宏定义】
  2. Bailian4084 拓扑排序【拓扑排序】
  3. HDU2107 Founding of HDU【序列处理+最大值】
  4. JSK-T1011 反向输出一个三位数【入门】
  5. CCF NOI1013 识别三角形
  6. vim 使用 Tricks
  7. 【常识】—— 生物学
  8. 编程军规 —— Java 篇
  9. parfor —— matlab 下的并行循环
  10. 前四史 —— 《后汉书》