贪心法——最优装载问题

最优装载问题。给出nn个物体,第ii个物体重量为wiw_i。选择尽量多的物体,使得总重量不超过C<script id="MathJax-Element-230" type="math/tex">C</script>。

只关心物体的数量,这样只需把所有物体按重量从小到大排序,依次选取每个物体,直到装不下为止。这就是一种典型的贪心算法,只顾眼前,但在一定程度上却能得到最优解。

最优装载问题实现算法

// 贪心法
// 最优装载问题
void optionalLoad(int *a, int n, int C) {sort(a, a + n);int retain = C;for(int i = 0; i < n; i++) {if(a[i] <= retain) {cout << a[i] << " ";retain -= a[i];}}cout << endl;
}

测试主程序

#include <iostream>
#include <algorithm>using namespace std;// 贪心法
// 最优装载问题
void optionalLoad(int *a, int n, int C) {sort(a, a + n);int retain = C;for(int i = 0; i < n; i++) {if(a[i] <= retain) {cout << a[i] << " ";retain -= a[i];}}cout << endl;
}int main() {while(true) {// n个物体int n;cout << "请输入物体总数(0退出):";cin >> n;if(!n) {break;}int C;cout << "请输入不超过的总重量:";cin >> C;int a[n];cout << "分别输入" << n << "个物体的重量:";for(int i = 0; i < n; i++) {cin >> a[i];}cout << "最优装载为:" << endl;optionalLoad(a, n, C);}return 0;
}

输出数据

请输入物体总数(0退出):5
请输入不超过的总重量:10
分别输入5个物体的重量:5 3 2 4 1
最优装载为:
1 2 3 4
请输入物体总数(0退出):3
请输入不超过的总重量:3
分别输入3个物体的重量:5 7 4
最优装载为:请输入物体总数(0退出):2
请输入不超过的总重量:10
分别输入2个物体的重量:2 6
最优装载为:
2 6
请输入物体总数(0退出):0Process returned 0 (0x0)   execution time : 31.096 s
Press any key to continue.

贪心法——最优装载问题相关推荐

  1. 算法设计与分析【第七周】贪心算法 最优装载问题

    最优装载问题 有一批集装箱要装上一艘载重量为c的轮船.其中,集装箱i的重量为Wi. 最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船. 另外,单源最短路径(Dijistra算 ...

  2. 贪心算法两船装载问题Java_贪心算法-最优装载问题

    贪心选择算法为算法分析中一种常用算法,通过一系列的选择来得到一个问题的解.它所作的每一个选择都是当前状态下某种意义的最好选择,即贪心选择.希望通过每次所作的贪心选择导致最终结果是问题的一个最优解.这种 ...

  3. 【恋上数据结构】贪心(最优装载、零钱兑换、0-1背包)、分治(最大连续子序列和、大数乘法)

    贪心.分治 贪心(Greedy) 问题1:最优装载(加勒比海盗) 问题2:零钱兑换 零钱兑换的另一个例子 贪心注意点 问题3:0-1背包 0-1 背包 - 实例 一些习题 分治(Divide And ...

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

    贪心算法的本质: 它是解决问题的策略上"目光短浅",只根据当前已有信息就做出选择,而且一旦做出选择,不管将来有什么结果,这个结果都不会发生改变.换言之,贪心算法并不是从整体最优考虑 ...

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

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

  6. 算法设计与分析——贪心算法——最优装载问题

    有一批集装箱要装上一艘载重量为c的轮船.其中集装箱i的重量为Wi.最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船. #include<iostream> #in ...

  7. 【趣学算法】Day2 贪心算法——最优装载问题

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️

  8. 【贪心算法】最优装载问题C++语言

    文章目录 问题描述 问题分析 算法步骤 举例 代码 问题描述 有一批集装箱要装上一艘重量为c的轮船.已知集装箱i(1<=i<=n)的重量为Wi,最优装载问题要求在装载体积不受限制的情况下, ...

  9. 贪心算法下的两大经典问题:最优装载问题、最小延迟调度问题

    上一篇主要介绍了贪心算法的内容和活动选择问题.本篇主要介绍最优装载问题和最小延迟调度问题 1.最优装载问题 什么是最优装载问题 类似于0-1背包问题那样,有n个集装箱1,2,-,n装上轮船,集装箱i的 ...

最新文章

  1. 【c语言】统计字符次数
  2. shell 统计一个词出现的概率_如何在Mac上设置系统范围的字数统计服务
  3. 【计算理论】图灵机 ( 多个带子的图灵机 | 计算能力对比 | 证明过程 | 一个带子图灵机 )
  4. 常用的SSH注解标签
  5. delphi 怎么获取工程版本号
  6. Python为何如此优秀?斯坦福教授告诉你!
  7. matlab 矩阵拼接
  8. oracle 实现HA,使用KeepAlived实现HAProxy高可用
  9. rv1126 固件编译规则
  10. 天刀找不到服务器,《天涯明月刀手游》好友服务器查看方法 怎么查看好友在哪个区...
  11. postgresql 导出单张表
  12. 只用一个div画一个小米logo
  13. /bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
  14. 2019XUPT_ACM 寒假训练第二期
  15. java全栈系列之JavaSE--JDK的安装以及环境搭建001
  16. 红石外汇|每日分享:0.667是澳元多头在FOMC会议前的最后一道防线
  17. echarts 点击地图画布空白处 触发事件
  18. W ndows7怎么进入BlOS,windows7怎么打开bios设置CPU?
  19. 如何使用手机打印资料,手机资料怎么打
  20. Live800:大数据将如何改变客户服务?

热门文章

  1. Linux如何建立用户(组)及调整用户(组)属性(案列+详细指令)
  2. golang入门小记
  3. 订单状态 css_CSS状态2019
  4. 二进制数据结构:JavaScript中的树和堆简介
  5. java调用sqlserver存储过程_Java中调用SQLServer存储过程示例
  6. Python制作AI贪吃蛇,细节、思路都写下来了!
  7. 大数据技术周报第 005 期
  8. 关于TCP协议的大部分,面试常问的几点都在这理里了
  9. 挣值管理:PV,AC和EV
  10. 保险条款精解(二) 丢车——如何将损失降到最低点?