4-2 背包问题(贪心)

2023-11-17

4-2 背包问题(贪心)

与0-1背包问题类似,所不同的只是在选择物品i装入背包时,可以选择物品的一部分而不一定要全部,1≤i≤n。

用贪心算法解背包问题的基本步骤是:
首先计算每种物品单位重量的价值vi/wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未达到w,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去直到背包满重为止。算法的主要计算时间在于将各种物品依其单位重量的价值从大到小排序。
因此,算法的计算时间上界为排序的时间复杂度O(nlogn)。
/*
20 6
3 6 2 5 5 10 1 2 6 16 4 8
*/

#include<iostream>
#include<algorithm>
using namespace std;
struct product{
	int weight;
	int value;
}; 
int comp(product a,product b){ //按value/weight从大到小排序 
	return a.value/a.weight > b.value/b.weight ;
}
int main(){
	struct product p[10];
	int i,c,n;
	cin>>c>>n;
	for(i=0;i<n;i++){
		cin>>p[i].weight>>p[i].value;
	}
	sort(p,p+n,comp);
	float t=c;//刚开始剩余容量为c 
	float ans=0;
	float x[10];
	for(i=0;i<n;i++) x[i]=0;
	for(i=0;i<n;i++){
		if(p[i].weight>t) break;
		x[i]=1;
		ans+=p[i].value;
		t-=p[i].weight;
	}
	if(i<n){
		x[i]=t/p[i].weight ;
		ans+=t*p[i].value/p[i].weight ;
	} 
	cout<<ans<<endl;
	for(i=0;i<n;i++){
		cout<<x[i]<<"  ";
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4-2 背包问题(贪心) 的相关文章

  • 区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境领域实践技术应用

    大气污染是工农业生产 生活 交通 城市化等方面人为活动的综合结果 同时气象因素是控制大气污染的关键自然因素 大气污染问题既是局部 当地的 也是区域的 甚至是全球的 本地的污染物排放除了对当地造成严重影响外 同时还会在动力输送作用下 极大地影
  • 【小程序】解析小程序原理

    本文首发自 前端修罗场 一个专注 Web 技术 答疑解惑 面试辅导 职业发展的社区 实际学习过程中 有些同学常常会对小程序和 Web 应用之间的差别产生疑惑 它们之间到底有什么不同 Web 应用不能作为小程序吗 本期文章将会带你比较小程序和

随机推荐

  • JS如何判断是否为null、undefined、NaN

    判断null var exp null if exp typeof exp undefined exp 0 alert is null typeof exp undefined 排除了 undefined exp 0 排除了数字零和 fal
  • 【观影笔记】地平线:大数据时代(BBC)

    地平线 大数据时代 BBC 影片中的实例 大数据分析所需要素 感悟 影片中的实例 洛杉矶 利用预测地震余震发生的模型来预测犯罪 数据挖掘起源 约翰 格兰特Graunt 伦敦黑死病死亡记录 Phil Beales 基因生物学寻找疾病治疗方法
  • PostgreSQL 基本安装总结

    一 Mac 环境下的安装 brew install postgresql 1 1 查看当前环境版本 pg ctl V 1 2 初始化数据库 在开始使用数据库前 需要在磁盘上初始化一个数据库存储区域 通常称之为一个数据库集簇 SQL标准使用的
  • fastjson 问题

    问题 1 fastjson value 为null key 会丢失问题 2 SerializerFeature 配置参数 背景 和第三方系统进行对接 两边商量好了接口定义 有些是非必填项 从数据库查询出来的数据赋值给相应的key 有些Str
  • 会议是浪费工作时间的最佳去处

    本文为翻译初稿 更多精彩内容 敬请关注 高效能程序员的修炼 人民邮电出版社 今天你开了多少个会 这个星期呢 这个月呢 现在你再自问一下 那些会议中有多少是值得参加的 如果把相同的时间用在工作上 你又能完成多少事情 这不禁让人想知道 我们究竟
  • 【设计模式

    every blog every motto You can do more than you think https blog csdn net weixin 39190382 type blog 0 前言 设计模式 上 创建型 设计模式
  • 基于51单片机无线NRF24L01的温湿度光照采集

    接收端 原理图 发送端 原理图 实物焊接图 主端源程序 发送端程序 从机NRF24L01程序 ifndef API DEF define API DEF Define interface to nRF24L01 Define SPI pin
  • cJSON介绍与应用—基于VS以及STM32单片机

    一 cJSON介绍 cJSON是一个使用C语言编写的JSON数据解析器 具有超轻便 可移植 单文件的特点 使用MIT开源协议 cJSON的源码文件只有两个 1 cJSON h 2 cJSON c 使用的时候 只需要将这两个文件复制到工程目录
  • 数据仓库是什么?和数据库有何区别?

    在具体学习数据仓库之前先看一下数据中心的整体构架以及数据流向 DB 是现有的数据来源 可以为mysql SQLserver 文件日志等 为数据仓库提供数据来源的一般存在于现有的业务系统之中 ETL 是 Extract Transform L
  • Doxygen 详细使用

    doxygen的安装和基本使用可参考 Doxygen的安装和基本使用 常用选项 doxygen的所有选项的参考文档 doxygen官网文档 2 样式说明 doxygen可以自己自定义样式 手写 css文件 可以查看doxygen的源码 进行
  • 激光雷达LMS111在ROS上的使用

    LMS111 10100 在ROS上的测试与使用 准备工作 设备 硬件 LMS111 101000激光雷达 软件 ubuntu16 04 ROS 开始 设备连接 将激光雷达与处理器 电脑 工控机等 通过以太网连接好 激光雷达默认的IP地址为
  • Pytorch学习笔记(I)——预训练模型(三):VGG11网络结构

    VGG VGG11 VGG13 VGG16 VGG19 ResNet ResNet18 ResNet34 ResNet50 ResNet101 ResNet152 VGG features Sequential 0 Conv2d 3 64
  • Matlab神经网络训练函数train

    0 前言 本文基于MatlabR2009a分享神经网络的训练过程 1 启动训练 在Matlab中使用train函数对神经网络进行训练的时候 会弹出以下窗体 图1 1 由上图中的Netrual Network项可见 这是一个两层的网络 2 算
  • 适合Python入门的5本基础书籍

    Python 3标准库 对程序员而言 标准库与语言本身同样重要 它好比一个百宝箱 能为各种常见的任务提供完美的解决方案 所以本书是所有Python程序员都必备的工具书 全书以案例驱动的方式讲解了标准库中数百个模块的使用方法 如何工作 和工作
  • Java Web 远程调试

    Java Web 远程 调试 Tomcat 下载压缩版服务器 环境 Tomcat Eclipse 做远程调试我们并不需要其他特殊插件 1 配置Tomcat bin startup bat 在前面增加代码 SET CATALINA OPTS
  • linux三剑客awk命令详解之函数

    awk函数 在awk命令中 可以自定义函数 awk也有内置的函数 本篇文章主要介绍awk中的内置函数 awk内置函数分类 在awk中 内置函数主要分为算数函数 字符串函数 时间函数 其他函数等 以下列出一些常用的内置函数 算数函数 常用的主
  • html无法导入,如何修复“ImportError:无法导入名称'HTMLParseError'”?

    我正在尝试导入BeautifulGroup 但运行脚本时遇到错误 Traceback most recent call last File LinkCrawler py line 5 in from bs4 import Beautiful
  • CH9-网络编程

    案例9 2 模拟微信聊天 案例介绍 1 案例描述 在如今 微信聊天已经人们生活中必不可少的重要组成部分 人们的交流很多都是通过微信来进行的 本案例要求 将多线程与UDP通信相关知识结合 模拟实现微信聊天小程序 通过监听指定的端口号 目标IP
  • matlab模糊控制工具箱使用和模糊控制pid实例参考

    Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径 通过它我们不需要进行复杂的模糊化 模糊推理及反模糊化运算 只需要设定相应参数 就可以很快得到我们所需要的控制器 而且修改也非常方便 下面将根据模糊控制器设计步骤 一步步利
  • 4-2 背包问题(贪心)

    4 2 背包问题 贪心 与0 1背包问题类似 所不同的只是在选择物品i装入背包时 可以选择物品的一部分而不一定要全部 1 i n 用贪心算法解背包问题的基本步骤是 首先计算每种物品单位重量的价值vi wi 然后 依贪心选择策略 将尽可能多的