C++源码:

#include<iostream>
#include<algorithm>
#include<conio.h>
const int M=10000005;
using namespace std;
struct three{double w;//每个宝物的重量double v;//每个宝物的价值double p;//性价比
}s[M];
bool cmp(three a,three b)
{return a.p>b.p;//根据宝物的单位价值从大到小排序
}
int main()
{int n;//表示有n个宝物double m;//表示毛驴的承载能力cout<<"请输入宝物的数量n及毛驴的承载能力m"<<endl;cin>>n>>m;cout<<"请输入每个宝物的重量及价值,用空格分开"<<endl;for(int i=0;i<n;i++){cin>>s[i].w>>s[i].v;s[i].p=s[i].v/s[i].w;//每个宝物的单位价值}sort(s,s+n,cmp);double sum=0.0;//表示贪心运走宝物的价值之和for(int i=0;i<n;i++){if(m>s[i].w)//表示宝物的重量在毛驴的承载能力之内{m-=s[i].w;sum+=s[i].v;}else{sum+=m*s[i].p;//部分装入break;}}cout<<"装入宝物的最大价值maximumv value="<<sum<<endl;getch();return 0;
}

python源码:

w=[]#宝物的重量
v=[]#宝物的价值
p=[]#宝物的性价比
sum=0.0#表示贪心运走宝物的价值之和
m=float(input("毛驴的承载能力m="))
n=int(input("宝库中已有的宝物数量n="))
print("请输入每个宝物的重量w及宝物的价值v,输入时用空格分开:")
for i in range(n):a, b = (input("该宝物w&v:").split())w.append(round(float(a),1))v.append(round(float(b),1))p.append(round(v[i]/w[i],1))#每个宝物的单位价值
treasure=[[p[i],w[i],v[i]] for i in range(n)]
print("每一个宝物所对应的性价比、重量、价值:\n",treasure)
treasure.sort(reverse=True)
print("按照性价比从大到小排序后每一个宝物所对应的性价比、重量、价值:\n",treasure)
#print(treasure[1][0])
for i in range(n):if m>treasure[i][1]:m-=treasure[i][1]sum+=treasure[i][2]else:sum+=m*treasure[i][0]#最后一个宝物部分装入break
print("阿里巴巴的毛驴能装载的宝物的最大价值maxinum value=",sum)

阿里巴巴与四十大盗——背包问题相关推荐

  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. 贪心算法之阿里巴巴与四十大盗——背包问题

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

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

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

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

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

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

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

  6. 【贪心】阿里巴巴与四十大盗-背包问题

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

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

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

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

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

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

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

最新文章

  1. 7、vue中将token存到cookie
  2. ZooKeeper原理及使用
  3. Wireshark抓包与常见问题解决
  4. java static null,我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么样?...
  5. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
  6. PHP 笔记——操作MySQL数据库
  7. python爬取js加载的数据_Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程...
  8. QT的QAxFactory类的使用
  9. python 去空_Python 内存分配时的小秘密
  10. !!从中位数市盈率看目前市场位置
  11. Android Studio 解决The SDK platform-tools is too old问题
  12. intellij中导入外部的依赖包+在当前的工程中使用
  13. 【转】如何用Maven创建web项目(具体步骤)
  14. java中对象别名使用_JAVA中的别名现象
  15. 关联分析(Association analysis)
  16. java createstatement,createStatement参数说明
  17. hdu 3572 Task Schedule 网络流
  18. dsh批量管理linux服务器
  19. html推箱子过关检测函数,HTML5推箱子实现
  20. 最新版c语言经典习题100例(最全面)

热门文章

  1. C语言文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
  2. Linux系统编程学习之《编程前的准备》
  3. QuerySet中常用的方法
  4. C 语言 tensorflow 隐蔽通道,AI利用GAN创造永远打不完,破不了关的《超级玛利欧》游戏关卡...
  5. 知名开源项目所用开发语言收集
  6. 微信 加密解密帮助类
  7. Vanya and Cubes
  8. NFA、DFA模拟、正则表达式转NFA、NFA转DFA、DFA转正则、DFA最小化的python实现项目
  9. SQL Server 2008外围应用配置器及跨库查询设置
  10. ping6 使用笔记