博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最优装载(贪心)
阅读量:6899 次
发布时间:2019-06-27

本文共 1496 字,大约阅读时间需要 4 分钟。

描述:有一批集装箱要装上一艘载重量为C的轮船。其中集装箱i的重量为wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

贪心算法之最优装载

给出n个物体,第i个物体的重量为wi。选择尽量多的物体,使得总重量不超过C。
注意:这个地方每个物体是不可再分割的整体。思路:先把所有物体按重量排序(从小到大排序) , 然后贪心选择重量比较小的物体直到所选物体的总重量超过所允许的最大重量C 。 一般选择是从最小的开始,所以先要排序

第一种方法(容器)

#include 
#include
#include
using namespace std;int main(){ int c; //轮船的载重量 cout<<"轮船的载重量: "; cin>>c; int n; //集装箱个数 cout<<"集装箱个数: "; cin>>n; vector
v(n);//定义一个容器v(n),其类型为int· cout<<"物品质量:"; for(int i=0;i
>v[i]; sort(v.begin(),v.end());//从小到大排序 int all=0; //最多能装的集装箱个数 int cp=c; //当前剩余载重量 for(int i=0;i

第二种方法

1 #include 
2 #include
3 using namespace std; 4 5 6 int main() 7 { 8 int i,j,c,n;//分别为测试个数、集装箱个数 9 float weight[1000];//集装箱重量10 float load;//轮船载重量11 cin>>c; 12 for(i=0;i
>n>>load;15 for(j=0;j
>weight[j];17 sort(weight,n+weight);18 //开始装载19 int count=0;20 float sum=0.0;21 for(int k=0;k
=weight[k])24 {25 sum=sum+weight[k];26 load=load-weight[k];27 count++;28 }29 else30 break;31 32 }33 cout<
<<" "<
<

 

转载于:https://www.cnblogs.com/creative-work/p/9192608.html

你可能感兴趣的文章
【LeetCode】107 - Binary Tree Level Order Traversal II
查看>>
大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session
查看>>
开发人员应该对IIS理论层的知识了解的多一些~第三讲 网页从IIS端到客户端浏览器经历的阶段...
查看>>
将不确定变为确定~老赵写的CodeTimer是代码性能测试的利器
查看>>
Android自定义文本的进度条
查看>>
How to call JavaScript Function in objective C
查看>>
Javascript刷新页面的几种方法
查看>>
JS中apply和call的联系和区别
查看>>
十分钟让你的javascript登峰造极
查看>>
dotnet run 段错误
查看>>
怎样在RedHat Linux上使用oracle-validated包
查看>>
模拟web高并发
查看>>
解决数据重复导致查询出错问题
查看>>
springmvc(4)注解简单了解
查看>>
HTMLCSS学习笔记(四)----浮动原理及清浮动
查看>>
探究如何求两数的最大公约数(两种方法)
查看>>
Better Django models
查看>>
第 8 章 容器网络 - 054 - 准备 macvlan 环境
查看>>
第 10 章 容器监控 - 081 - Weave Scope 多主机监控
查看>>
FLASK爬坑笔记
查看>>