贪心算法Q1—— 最优装载问题
/*问题描述
在北美洲东南部,有一片神秘的海域,那里碧海 蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比海。17 世纪时,这里更是欧洲大陆 的商旅舰队到达美洲的必经之地,所以当时的海盗活 动非常猖獗。有一天,海盗们截获了一艘装满各种各样古董的 货船,每一件古董都价值连城,一旦打碎就失去了它 的价值。
虽然海盗船足够大,但载重量为 30,每件古董的重量分别为 3,5,4,10,7,14,2,11,
海盗们该如何把尽可能多数量的宝贝装上海盗船呢?
*/
package 贪心;
import java.util.Arrays;
public class 最优装载问题 {
public static void main(String[] args) {
Integer[] weights= {3,5,4,10,7,14,2,11};
//从小到大排2 3 4 5 7 10 11 14
Arrays.sort(weights);
// for(int i=0;i<weights.length;i++)
// System.out.println(weights[i]);
int capacity=30,count=0,newWeight=0;
//当前所选古董的总重量比船容量小才进入选古董 否则提前跳出外循环
for(int i=0;i<weights.length&&newWeight<capacity;i++) {
//尝试将古董装上船
newWeight=newWeight+weights[i];
if(newWeight<=capacity) {//满足船的容量则正真装上 计数器加1
count++;
System.out.println(weights[i]);
}
}
System.out.println(count);
}
}