文章目录

  • 加勒比海盗船——最优装载问题
    • 问题分析
    • 算法设计
    • 伪代码详解
    • 代码

加勒比海盗船——最优装载问题

 在北美洲东南部,有一片神秘的海域,那里碧海蓝天、阳光明媚,这,正式传说中海盗最活跃的加勒比海(Caribbean Sea)。17世纪时,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活动非常猖獗,海盗们不仅攻击过往商人,甚至攻击英国皇家舰…… 
 有一天,海盗们截获了一艘装满各种各样古董的货船,每一件古董都价值连城,一旦打碎就失去了它的价值。虽然海盗船足够大,载重量为C,每件古董的重量为Wi,海盗们如何把尽可能多数量的宝贝装上海盗船呢?

问题分析

​ 首先要确定贪心策略,选择一个你认为最好的方案,运用贪心算法的缺点就是可能得不到最优解

​ 这道题要求古董的数量尽可能多,而船的容量是固定的,那么优先把重量小的物品放进去,在容量固定的情况下,装的物品最多,这里我就采用这种策略。

算法设计

​ 按照贪心策略,每次选择重量最小的古董放入(tmp代表古董的重量,ans代表已经装载的古董的个数)。

i 选择排序后第几个 装入重量tmp 是否超过载重量 ans
i=0 第一个 tmp=2 1
i=1 第二个 tmp=2+3=5 2
i=2 第三个 tmp = 5+4=9 3
i=3 第四个 tmp=9+5=14 4
i=4 第五个 tmp=14+7=21 5
i=5 第六个 tmp=21+10=31 超过 算法结束

伪代码详解

  1. 数据结构定义

    根据算法设计描述,我们用一维数组存储古董数量:

    double w[N];//一维数组存储古董的重量
    
  2. 按重量排序

    可以利用C++标准库中的排序函数sort,对古董的重量进行从小到大(非递减)排序。要使用此函数需要引入头文件<algorithm>

    语法描述为:

    sort(begin, end) //参数begin和end表示一个范围,分别为待排序数组的首地址和尾地址//sort函数默认升序
    
    sort(w, w+n);
    

大家都会了吗?自己亲手试试吧!先不要往下看,自己思考才是最好的

加勒比海盗船——最优装载问题-贪心算法相关推荐

  1. 2.2加勒比海盗船——最优装载问题

    2.2加勒比海盗船--最优装载问题 2.2.1问题解析 2.2.2算法设计 2.2.3完美图解 2.2.5实战演练 2.2.6 算法解析及优化拓展 1.算法复杂度分析 2.优化拓展 在北美洲东南部,有 ...

  2. 贪心算法-加勒比海盗船——最优装载问题

    实际问题:一群海盗截获了一艘装满各种金银珠宝和古董的货船,每一件宝物都价值连城一旦打碎就失去了价值.海盗船的载重量为C,每件宝物的重量为Wi,海盗们应该如何把尽可能多的宝物装上船? 问题分析:这是一个 ...

  3. 贪心算法--加勒比海盗船--最优装载问题

    一.问题描述 在北美洲南部,有一篇神秘的海域,那里碧海蓝天.阳光明媚.这正是传说中海盗最活跃的加勒比海.17世纪时,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活动非常猖獗,海盗不仅攻 ...

  4. 【贪心算法】加勒比海盗船——最优装载问题

    目录 一.贪心本质 二.贪心的两大重要性质 三.贪心秘籍 四.最优装载问题 五.小结 一.贪心本质 一个贪心算法总是做出当前最好的选择,也就是说,它通过局部最优选择从而得到全局最优的解决方案. --& ...

  5. 算法笔记:加勒比海盗船---最优装载问题 如何将最多的宝物装上船 贪心求解 C++

    问题描述:在北美洲的南部,有一片美丽神秘的海域,名字叫作加勒比海,那里有一群海盗,非常猖獗.有一天海盗收获了很多古董,海盗船的载重为C,每件古董的重量为wi,如何将尽可能多的宝物装上船呢? 思路:很明 ...

  6. 贪心算法之加勒比海盗船最优装载问题

    1.问题 在北美洲东南部,有一片神秘的海域,那里碧海蓝天.阳光明媚,这正是传说中海盗最活跃的加勒比海,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活皇家舰......动非常猖獗,海盗不 ...

  7. 【贪心】加勒比海盗船-最优装载问题

    题目 在北美洲东南部,有一片神秘的海域,那里碧海蓝天.阳光明媚,这正是传说中海盗最活跃的加勒比海.17 世纪时,这里更是欧洲大陆的商旅舰队到达美洲的必经之地,所以当时的海盗活动非常猖獗,海盗不仅攻击过 ...

  8. 最优装载c语言贪心算法,最优装载(贪心算法)

    算法设计例题:最优装载(贪心) memory limit: 32768KB    time limit: 1000MS accept: 24    submit: 68 Description 有一批 ...

  9. 加勒比海盗船——最优装载问题(趣学算法C++代码和python代码)

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

最新文章

  1. Java:全局变量(成员变量)与局部变量
  2. MarkdownView:Markdown 文档预览视图组件
  3. R语言决策树、bagging、随机森林模型在训练集以及测试集的预测结果(accuray、F1、偏差Deviance)对比分析、计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况
  4. 关于SAMBA的关键参考资源
  5. War of Inazuma (Easy Version) 阅读理解-n维超立方体-二进制-longlong右移32位
  6. 【Interfacenavigation】风格和主题(21)
  7. sql三张表的搜索要满足5种搜索条件的模糊搜索_面试三轮我倒在了一道 SQL 题上……| 原力计划...
  8. ajax php 返回数组并父子给变量,将字符串变量从PHP发送回数组变量的ajax ...?
  9. linux scp限制传输速度
  10. Eclipse 中 Could not find *.apk的解决方案
  11. 计算机怎么剪切音乐然后合在一起,怎么在电脑裁剪歌曲 怎么裁剪和拼接音乐...
  12. Android Studio快捷键设置 (实现原eclipse ctrl+m 代码全屏的效果)
  13. 拓展题 系列I之科普系列
  14. 怎样裁切图片?如何将图片剪裁成需要的大小?
  15. 史丰收速算-第五届蓝桥杯省赛
  16. 华为应用市场AGC研习社|如何提升投放转化,实现获量增长?
  17. 观张国荣的电影《霸王别姬》有感
  18. 只要能言之有理,持之有据,则可立于讲台
  19. 目标拦截问题—微分对策
  20. linux 怎么把新硬盘分区,linux添加新硬盘分区

热门文章

  1. 2022年计网《宿舍网有线无线一体化项目》总结
  2. 如何租用网站服务器,如何租用网站服务器有什么需要留心?
  3. 计算机虚拟筛选方法,药物发现的虚拟筛选基本方法 .ppt
  4. linux网口环回测试程序,关于linux:Linux-环回网络接口
  5. Jmeter关联,正则表达式提取器使用2
  6. SD卡、TF卡、SIM卡的区别
  7. 你真的理解函数式编程吗?
  8. 使用火焰传感器和Arduino开发板搭建火灾报警系统
  9. android本地化,Android本地化
  10. JAVA留言板系统(java留言板系统)java留言管理系统