最优装载问题
package com.duoduo.test1;
/**
* 最优装载问题
* 给定船能装载的最大容量 给定各个物品的重量 问最多能装载多少件物品\
* 思路:贪心策略 即先排序 然后将最小重量的古董装入 然后判断是否超过船载量
*/
import java.util.Scanner;
import java.util.Arrays;
public class Test2_2{
public static void main(String [] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入载重量C和古董个数n :");
double c=sc.nextDouble(); //船的载重量
int n=sc.nextInt(); //古董的个数
System.out.println("请输入每个古董的重量,用空格分开:");
double [] W=new double[n]; //每个古董重量(数组数据结构)
for(int i=0;i<n;i++)
W[i]=sc.nextDouble();
Arrays.sort(W); //从小到大进行排序
double tmp=0; //初始化 已装载的古董重量
int ans=0; //初始化 已装载的古董数量
for(int i=0;i<n;i++) {
tmp+=W[i]; //将重量最小的陆续装入
if(tmp<=c) { //并判断是否超过总的载重量
ans++; //未超过则数量加1
}else {
break; //超过则跳出循环
}
}
System.out.println("能装入的古董最大数量为ANS= "+ans);
}
}
}
结果测试: