信息学奥赛一本通1268:【例9.12】完全背包问题代码+详解

题目链接:1268

题目

1268:【例9.12】完全背包问题


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 40600     通过数: 21799

【题目描述】

设有n�种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M�,今从n�种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M�,而价值的和为最大。

【输入】

第一行:两个整数,M�(背包容量,M≤200�≤200)和N�(物品数量,N≤30�≤30);

第2..N+12..w[i]+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。

【输出】

仅一行,一个数,表示最大总价值。

【输入样例】

10 4
2 1
3 3
4 5
7 9

【输出样例】

max=12

题目详细解析

        了解背包问题

        01背包,只能背一次,后面不能在背了

        多重背包,可以背w[i]次

        完全背包,可以背无限次。

        来,我们先按多重背包的思想来做

        比如f[5](多重背包的j是逆序判断的)

f[5]=max(f[5],f[3]+x[i]);

等等,你们有没有发现问题?

f[3]还没有被刷新就用上了,那么,该怎么办呢?

就要按顺序来判断了。

for(int j=1;j<=w[i];j++)

完全背包跟踪:

i=0,f[0],....f[5]=0;前0个人--价值=0 

i=1,前1个人,     j=w[1]..<=c=5;!!只有01背包  

    j=2,f[2]=max(f[2]=0,f[2-w[1]]+v[1]=100,

    j=3,f[3]=max(f[3]=0,f[3-w[1]]+v[1]=f[1]+v[1]=100

    j=4,f[4]=max(f[4]=0,f[4-w[1]]+v[1]=f[4-2]+100=f[2]+100  !!重要

//j=4时,f[4]用到的f[2]是本行的f[2]=100,f[4]=100+100=200; 

//!!假设,j从大到小,那么j=4时,f[4]=f[2]+100,f[2]是上一行=0,f[4]=100错误 

    j=5;f[5]=max(f[5],f[5-w[1]]+v[1]=f[3]+100=200;

结果:i=1,f[0]=0;f[1]=0,f[2]=100,f[3]=100,f[4]=200,f[5]=200,

i=2,前2个人 j=w[2]=3..<=c=5;

  f[3]=max(f[3]=100,f[3-w[2]]+v[2]=f[0]+120=120)=120;  

  f[4]=max(f[4]=200,f[4-w[2]]+v[2]=f[1]+120= 120

  f[5]=max(f[5]=200,f[5-w[2]]+v[2]=f[2]+120=100+120=220=220 

代码(有注释)

​
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,c;
int w[1001],v[1001];
int f[50001];
int main()
{  int i,j;
cin>>n>>c;
for(i=1;i<=n;i++)
cin>>w[i];
for(i=1;i<=n;i++)
cin>>v[i];
for(i=1;i<=n;i++)//物品
for(j=w[i];j<=c;j++)//!!只有完全背包,是从小 到大
f[j]=max(f[j],f[j-w[i]]+v[i]);
cout<<f[c];
return 0;
}}​

不点赞关注收藏的暑假作业翻倍!


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spanner on a modern columnar storage engine 中文翻译

文章目录 0. 摘要1. 存储引擎2. 存储引擎迁移的挑战2.1 可靠性、可用性和数据完整性2.2 性能和成本2.3 复杂性 3. 迁移可靠性的系统原则方法3.1 可靠性原则和自动化架构3.2 迁移方案和按周迁移3.3 客户 部署感知 调度3.4 管理可靠性、可用性和性能 4. 项目管理和驱动指标概括 0…

基于领域驱动设计的低代码平台的设计与实现

本文介绍了基于领域驱动设计&#xff08;DDD&#xff09;的低代码平台的设计与实现方法。低代码平台是一种能够通过图形化界面和少量编码&#xff0c;快速构建应用程序的工具。通过结合DDD的思想&#xff0c;我们可以将领域专家的知识转化为具体的领域模型&#xff0c;并将其作…

网络层协议及IP编址

0x00 前言 本节为网络层协议及IP编址内容 IP地址的范围&#xff1a;0.0.0.0-255.255.255.255 IP分为网络位以及主机位。子网划分就是向主机位借位。 网络层协议 IPICMP&#xff08;internet Control message protocol&#xff09;IPX IP协议的作用 为网络层的设备提供逻…

手把手教你新建一个winform项目(史上最全)

文章目录 前言&#xff1a;第1步、打开Microsoft Visual Studio&#xff08;简称vs&#xff09;&#xff0c;本人这里使用的是Visual Studio 2017 专业版&#xff0c;如下图&#xff1a;1.2 Visual Studio Community 2019下载1.3 Visual Studio Community 2019 安装 第2步、点击…

2024年【A特种设备相关管理(锅炉压力容器压力管道)】报名考试及A特种设备相关管理(锅炉压力容器压力管道)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;报名考试是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;模拟考试题库&#xff0c;安全…

nodejs版本管理工具nvm的安装与使用

提示&#xff1a;nodejs版本管理工具nvm的安装与使用 文章目录 前言一、安装二、淘宝镜像配置三、安装所需版本的nodejs四、切换nodejs版本五、参考文档总结 前言 需求&#xff1a;新建一个vue3项目&#xff0c;&#xff0c;提示写法错误 查原因为node版本过低 随着技术更新迭…

Python Asyncio网络编程方法全面解析与实战应用!

更多Python学习内容&#xff1a;ipengtao.com Python的asyncio库是一种强大的异步编程工具&#xff0c;它使得编写高效的网络应用程序变得更加容易。在本文中&#xff0c;我们将深入探讨使用asyncio进行网络编程的方法&#xff0c;包括异步IO、协程、事件循环等方面的内容&…

华为认证 | HCIP和HCIE难度差多了?

许多有志于在ICT领域发展的人士&#xff0c;都希望获得华为的HCIP或HCIE认证。 那么&#xff0c;考取这些认证到底需要多少钱&#xff1f;HCIP和HCIE的难度又存在怎样的差异&#xff1f;下面将为您揭晓答案。 01 考华为HCIE多少钱&#xff1f; ★ 考试费用 华为HCIE认证考试的…

22. Mysql 触发器

文章目录 概念常见操作查看触发器创建触发器删除触发器 精选示例数据完整性约束数据同步日志记录 总结参考资料 概念 触发器&#xff08;Trigger&#xff09;是 Mysql 数据库中的一种特殊的存储过程&#xff0c;它会在数据库中的指定表上自动执行某些操作。当满足触发器定义的…

Python编程+copilot+代码补全+提高效率

Python编程copilot代码补全提高效率 copilot是由Github和OpenAI合作开发的一款AI编程工具&#xff0c;它可以根据自然语言或部分代码&#xff0c;自动给出合适的代码补全建议。copilot支持多种编程语言&#xff0c;包括Python&#xff0c;也可以在Pycharm等主流IDE中使用。本资…

正则表达式速查手册

正则表达式 1、正则表达式简介2、常用正则表达式速查手册 1、正则表达式简介 正则表达式是一种强大的文本匹配工具&#xff0c;可以用于在文本中查找特定的模式 正则表达式由不同类型的字符组成&#xff0c;包括普通字符、元字符、分隔符和转义字符等。其中&#xff1a; 普通字…

超niu的正则

有一个几百行的建表语句&#xff0c;给到咱的时候各种乱&#xff0c;需要整理一下 a1 as num1 string comment , a2 as num2 string comment , ...... 在notpad里需要把上述sql修改成 num1 string comment , num2 string comment 搞了一会&#xff0c;用下面这个正则就可以…

服务器超线程的好处

服务器超线程的好处 1、提高性能&#xff1a;超线程通过提高整体系统吞吐量显着提高服务器性能。通过允许多个线程在单个物理内核上同时执行&#xff0c;超线程减少了空闲时间并最大限度地利用了可用资源。这会加快任务执行速度并缩短应用程序的响应时间&#xff0c;尤其是在多…

SpringIOC之support模块FileSystemXmlApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

LINE网页版使用方法(内含LINE网页版特点总结)

如果想要在电脑上使用LINE&#xff0c;但是又觉得下载客户端很累赘的话&#xff0c;LINE网页版是你最好的选择。但是LINE网页版相对于其他平台来说使用方式比较少。所以今天就来讲讲&#xff0c;我们有什么方式可以在电脑中使用LINE。 LINE网页版使用方法 1.需要使用Chrome浏览…

数据的相似度计算

相似度系数又称为相关系数&#xff0c;常用于考察两个变量x、y之间的相关程度。 若为0&#xff0c;则x和y无相关性若为正&#xff0c;则x和y呈正相关&#xff0c;相关系数在0~1之间若为负&#xff0c;则x和y呈负相关&#xff0c;相关系数在-1~0之间相似度系数的绝对值越大&…

【hyperledger-fabric】部署Java应用远程访问智能合约

简介 首先是根据b站的视频 hyperledger-fabric【3】在 java 应用中访问合约 以及hyperledger-fabric【5】Java应用和私有数据&#xff0c;本文章主要讲述的是视频中我遇到的问题&#xff0c;以及相关知识点的总结。 遇到的问题 问题1&#xff1a;git clone下载下来的代码发现…

K8S学习指南(67)-脚手架工具KubeBuilder

文章目录 引言KubeBuilder 的历史发展KubeBuilder 的设计理念1. 约定优于配置2. CRD 和控制器的生成3. 可插拔的架构4. 集成了测试框架 KubeBuilder 的使用1. 安装 KubeBuilder2. 创建一个新的 KubeBuilder 项目3. 创建一个新的 API 对象4. 实现控制器逻辑5. 生成 CRD 和控制器…

esp32-s3 max98357

esp32一直正常使用&#xff08;1.0.6的esp库&#xff09;&#xff0c;最近买了esp32s3就报错如下&#xff08;2.0.5的库&#xff09;&#xff1a; E (363) I2S: i2s_calculate_common_clock(1149): sample rate is too large E (364) I2S: i2s_calculate_clock(1198): Common…

《异侠传S1赛季侠义九州》公测版本三端互通PC客户端与IOS下载地址!!!

尊敬的各位异侠玩家们&#xff1a; 我们怀着无比激动的心情&#xff0c;充满感激地向大家宣布&#xff1a;今天上午10&#xff1a;00我们即将迎来《异侠传S1赛季&#xff1a;侠义九州》的首发公测&#xff01;在这个特殊的时刻&#xff0c;我们想将我们最诚挚的感谢献给每一位…