题目

阿里巴巴因为偶然的机会进入了强盗们的宝库,他想拿走一些让乡亲们开开眼。他想每种宝物只拿一个,如果太重就用锤子凿开,但毛驴运载能力有限,怎么才能用毛驴运走最大价值的宝物呢?

数据

输入

第一行:宝物种数n和毛驴的承载重量m
之后n行:每行都是一种宝物的重量和价值

输出

最高价值

问题分析

这个问题是基础的背包问题,就是看怎么装能使价值最大,就是尽可能装性价比高的宝物,才能在一定的重量范围内得到最大的价值。

算法

算法核心

本题采用贪心算法,就是每次都选择剩余宝物中单位质量的价值(性价比)最高的宝物,直至达到承载量,计算所选宝物的价值即为所求。

算法流程

采用结构体存储每种宝物的质量,价值和性价比,将所有宝物按性价比从高到低排序,采用for循环遍历,如果加上当前宝物之后的总质量不大于承载量,总质量增加,总价值增加,如果大于,就将宝物分割,就是总质量与承载量之间的这部分质量全都装当前宝物,计算这部分的价值加到总价值上,退出循环,输出总价值。

代码实现

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=105;struct object
{double w;//重量double v;//价值double p;//单位重量的价值
}a[maxn];bool sort1(object o1,object o2)
{return o1.p>o2.p;
}
int main()
{int n,m;cin>>n>>m;int i;for(i=0;i<n;++i){cin>>a[i].w>>a[i].v;a[i].p=a[i].v/a[i].w;}sort(a,a+n,sort1);double sum=0.0,res=0.0;//总质量,总价值(最大价值)for(i=0;i<n;++i){if(sum+a[i].w<=m)//装上这个宝物还没超重{res+=a[i].v;sum+=a[i].w;}else//装上这个宝物超重{res+=(m-sum)*a[i].p;break;}}cout<<res<<endl;return 0;
}

【贪心】阿里巴巴与四十大盗-背包问题相关推荐

  1. 2.3阿里巴巴与四十大盗——背包问题

    2.3阿里巴巴与四十大盗--背包问题 2.3.1问题分析 2.3.2算法设计 2.3.3 完美图解 2.3.4 伪代码详解 2.3.5 实战演练 2.3.6算法分析及优化拓展 1.算法复杂度分析 2. ...

  2. 贪心——阿里巴巴与四十大盗(可拆分背包)

    问题 F: 阿里巴巴与四十大盗 时间限制: 1 Sec  内存限制: 128 MB 提交: 215  解决: 123 [提交][状态][讨论版][命题人:quanxing] 题目描述 有一天,阿里巴巴 ...

  3. 贪心算法之阿里巴巴与四十大盗——背包问题

    14天阅读挑战赛 有一天,阿里巴巴赶着一头毛驴上山砍柴.砍好柴准备下山时,远处突然出现一股烟尘,弥漫着向上空飞扬,朝他这儿卷过来,而且越来越近.阿里巴巴心里害怕,担心碰到的是一伙儿强盗,他赶紧把毛驴赶 ...

  4. 贪心算法--阿里巴巴与四十大盗--背包问题

    一.问题描述 有一天,阿里巴巴赶着一头毛驴上山砍柴.砍好柴准备下山时,远处突然出现一股烟尘,弥漫着直向上空非扬,朝他这儿卷过来,而且越来越近.靠近以后,他才看清原来是一支马队,他们公有四十人,一个个年 ...

  5. 【贪心算法】阿里巴巴与四十大盗——背包问题与0-1背包问题

    前言 关于贪心算法,我在这篇博客中已经做了简单的介绍.初识贪心算法 下面来介绍一下贪心算法中的一个经典的问题--背包问题 一.问题描述 一天,阿里巴巴赶着一头毛驴上山砍柴,无意间在远处发现了一群盗贼, ...

  6. 2.3阿里巴巴与四十大盗 背包问题

    有一天,阿里巴巴赶着一头毛驴上山砍柴.砍好柴准备下山时,远处突然出现一股烟尘,弥漫着直向上空飞扬,朝他这儿卷过来,而且越来越近.靠近以后,他才看清原来是一支马队,他们共有四十人,一个个年轻力壮.行动敏 ...

  7. 阿里巴巴与四十大盗——背包问题

    C++源码: #include<iostream> #include<algorithm> #include<conio.h> const int M=100000 ...

  8. 贪心算法之阿里巴巴与四十大盗(背包问题)

    1.问题 有一天,阿里巴巴赶着一头毛驴上山砍柴.砍好柴准备下山时,远处突然出现一股烟尘,弥漫着直向上空飞扬,朝他这儿卷过来,而且越来越近.靠近以后,他才看清原来是一支马队,他们共有四十人,一个个年轻力 ...

  9. 贪心算法 | 背包问题——阿里巴巴与四十大盗

    2.背包问题--阿里巴巴与四十大盗 问题:有一天,阿里巴巴赶着一头毛驴上山砍柴.砍好柴准备下山时,远处突然出现一股烟尘,弥漫着直向上空非扬,朝他这儿卷过来,而且越来越近.靠近以后,他才看清原来是一支马 ...

最新文章

  1. C语言指针和数组概述
  2. 传统数据中心如何实现向云的平滑升级
  3. 第三方应用商店仍为用户获取APP主渠道 细分市场或成新增长点
  4. Python 分布式文件系统 Mongodb GridFS
  5. Jobdu 1005
  6. xml与实体互相转换
  7. Echarts 自定义、覆盖legend点击事件、禁用legend默认的点击行为的实现
  8. vue+element+上传图片插件
  9. linphone源码下载及下载失败解决方法
  10. OpenFOAM动网格的通量修正
  11. vmbox让鼠标离开虚拟机
  12. python绘制光滑曲线
  13. SQL每日一题 牛客17 10月的新客户单价和获客成本
  14. 【感恩】为做运维的重病老同事李静波寻求帮助
  15. 创业期间,应该怎么样坚持下去?如何从容面对困难?
  16. 【NLP】BiLSTM 命名实体识别 手写代码
  17. Allocate exception for servlet LoginServletjava.lang.ClassNotFoundException:
  18. 初中人教版计算机考试试题,人教版初中英语试卷试题
  19. Mogafx通胀与英镑的关系
  20. 站群目前来说依然在站长圈非常的流行

热门文章

  1. 谷歌MapReduce论文学习
  2. 3.28“地球停电一小时”——世界节电日
  3. ChatGPT生成量化交易策略,真好玩
  4. 官网下载不同版本的AndroidStudio
  5. python中fasta转为字典
  6. Android学习笔记五—简易新闻应用设计
  7. java编写xsd_java xsd
  8. 软件测试学习-性能测试及工具Loadrunner(理论篇)
  9. idea中更换maven仓库位置
  10. 0.96寸OLED屏硬件驱动电路