贪心法装载问题.doc_第1页
贪心法装载问题.doc_第2页
贪心法装载问题.doc_第3页
贪心法装载问题.doc_第4页
贪心法装载问题.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

方法一:问题描述有n个集装箱要装上1艘载重量分别为c的轮船,其中第i个集装箱的重量为wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船,并找出一种装载方案输入输入有若干组测试数据(不超过20组)。每组测试数据有2行:第1行上是集装箱个数n和船的载重量c,(n1000,c65535);第2行上有n个整数w1、w2、wn,整数之间用一个空格分开,这n个整数依次表示这n个集装箱的重量,(0wi 1000,i=1,2,n)。输出现要求对输入中的每组测试数据,输出3行:在第1行上输出“Case #”,其中“#”是测试数据的组号(从1开始)。在第2行上两个整数bestn、leftc其中bestn是船能装的最多的集装箱数,leftc是对应于bestn的船的最大剩余载重量。在第3行上输出一个0-1字符串x1x2xn,其中x1x2xn是对应于bestn的具体装载方案,xi=1表示第i个集装箱装在船上,而xi=0表示第i个集装箱不装在船上。对应于bestn的装载方案可能不唯一,如重量分别为40、10、40的3个集装箱,若船的载重量是50,那么只能装2个集装箱上船,因此有装载方案110和011两种。为使输出结果唯一,我们约定长为n的0-1字符串以字典序最大的那个为符合要求的装载方案,此例中应为110。输入样例3 5040 10 405 3710 30 24 35 40输出样例Case 12 0110Case 22 310100package greedy;import java.util.Arrays;class Element implements Comparable float weight; int i; public int getI() return i; public void setI(int i) this.i = i; public float getWeight() return weight; public void setWeight(float weight) this.weight = weight; public Element(float weight, int i) super(); this.weight = weight; this.i = i; public int compareTo(Object o) / TODO 自动生成方法存根 float xw=(Element)o).weight; if(weightxw) return -1; if(weight=xw) return 0; return 1;/* author Administrator*/public class OptLoad private Element element;private float c;public OptLoad(Element element,float c) super();this.element = element;this.c=c; public int loading() Arrays.sort(element); int result=0; for(int i=0;ielement.length&elementi.getWeight()=c;i+) result+; c-=elementi.getWeight(); return result; /* * param args */public static void main(String args) / TODO 自动生成方法存根方法二:最优装载问题实现#include iostream.hvoid Sort(int *w,int *t,int n);int main() int n,c; cout请输入所要装载物品的数量n;int *w=new intn+1; /指向物品的重量int *t=new intn+1; /指向物品的序号 cout请输入该单位所能够装载的最大重量:c;cout请输入所要装载的物品的重量endl;for(int i=1;iwi; for(i=1;in+1;i+)ti=i;Sort(w,t,n);for(i=1;i=n&wi=c;i+)/xti=1;c-=wi;cout输出所装载的物品序列号以及它的重量为:ti wiendl;delete w;delete t;return 0;void Sort(int *w,int *t,int n)int temp,tem;for(int j=0;jn+1;j+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论