import org.junit.Test; /** * @auther qwh * @create 2022-11-22-15:44 */ public class test3 { public void function(int allweight,int weight[],int tf[]) { int opt=0;//opt为装入船中集装箱的重量 int n=weight.length;//集装箱的个数 int index[]=new int[n];//记录集装箱原始序号数组 for(int m=0;m<n;m++)//初始化序号数组 { index[m]=m; } //对集装箱的重量进行排序 for (int i = 1; i < n; i++) { for(int j=i+1;j<n;j++) { if(weight[i]>weight[j]) { int temp=weight[i]; weight[i]=weight[j]; weight[j]=temp; int temoindex=index[i];//记得将初始的索引也交换位置 index[i]=index[j]; index[j]=temoindex; } } } //初始化tf数组 for(int i=0;i<n;i++) { tf[i]=0; } for(int i=0;i<n;i++) { if(weight[i]<=allweight) { tf[index[i]]=1;//标记为加入 allweight-=weight[i];//减去集装箱的重量求出顺下船的空间 opt+=weight[i];//将集装箱的重量加入 } } System.out.println("总重量为"+opt); System.out.println("加入的集装箱有"); for (int i = 0; i < n; i++) { if(tf[i]==1) { System.out.print((i+1)+"\t");//因为数组的索引从0开始物品没有0序号 } } } @Test public void test() { int allweight=10; int weight[]=new int[]{4,2,5,1,3}; int tf[]=new int[weight.length]; function(allweight,weight,tf); } }
java 贪心算法 最优装载问题
于 2022-11-22 17:10:12 首次发布