【动态规划笔记】完全背包问题及优化
第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;
【动态规划笔记】完全背包问题及优化相关推荐
- 机试指南第七章-动态规划-笔记及背包问题
第七章 动态规划 一.递归求解: 递归问题的关键是解决初始值和递推公式,从而将复杂问题分解为简单问题直至初始值对应的极简问题,从而得到答案. 套路:初始值+递归公式. Trick:将求出的值存 ...
- 【动态规划笔记】背包问题:搬寝室
- 经典动态规划:0-1 背包问题
经典动态规划:0-1 背包问题 文章目录 经典动态规划:0-1 背包问题 一.题目描述 二.动规标准套路 三.题目描述 四.解法分析 五.优化 一.题目描述 就讨论最常说的 0-1 背包问题,简单描述 ...
- 【算法】动态规划笔记
[算法]动态规划笔记 动态规划: 将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解 动态规划会将每个求解过的子问题的解记录下来,这样下一次碰到同样的子问题时,就可以直接使 ...
- 动态规划:由背包问题入门1
#解题思路由y总提供 目录 NO.1 01背包问题 NO 2 完全背包问题 动态规划是我们c++学习中不可避免且相对棘手的问题,正所谓,吾后院有枇杷树,初学动规时手植也,今已亭亭如盖矣...,动规最大 ...
- 背包问题动态规划matlab,01背包问题动态规划详解
计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...
- o-1背包问题迭代_经典动态规划:01背包问题的变体
点击上方蓝字设为星标 东哥带你手把手撕力扣~ 作者:labuladong 公众号:labuladong 若已授权白名单也必须保留以上来源信息 上篇文章 经典动态规划:0-1 背包问题 详解了通用的 ...
- TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络
TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...
- 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
// 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...
- 算法导论——动态规划:0-1背包问题(完全解)
2019独角兽企业重金招聘Python工程师标准>>> package org.loda.dynamic;import org.junit.Test;/*** * @ClassNam ...
最新文章
- 极客新闻——16、数据库设计中的5个常见错误
- 如何提高lstm的预测精度_如何提高失重秤的喂料精度?你需要了解这些!
- 安卓10省电还是费电_拍照成罪魁祸首 安卓十大耗电App排行公布
- 短信猫前台群发短信的示例程序
- absolute 必须 relative_想搞BLDC电机控制,就必须要懂的角度传感器
- 静态代理和动态代理的区别,什么场景使用?
- 四月之 诗四首和五十六句话
- 2018年3大UI设计趋势,你知道吗?
- linux下bcd文件还原,BCDEDIT命令详解 | 数据恢复实验室 Data Recovery Laboratory
- .net微信扫码支付
- pta——出生年,查验身份证(c语言)
- 微信王者服务器怎么删掉,王者荣耀怎么删除微信好友 又快又好
- 下载视频网站视频的方法
- 【iframe结合pdf.js实现pdf的预览/下载及打印功能】
- 安装nvida-docker2
- Fifth week
- 计算机毕业设计、小程序毕业设计答辩PPT参考
- 向量的几何意义及编程应用(1)
- 浙江大学计算机考研机试KY132 xxx定律
- 电脑城 SUN GHOST WIN7 SP1 旗舰装机版V1.0