题目:
有n个人,第i个人的重量为wi,每艘船的最大载重量均为c,且最多只能乘两个人,用最少的船装载所有人。
思路:
贪心策略:考虑最轻的人i如果每个人都无法和他坐船(重量和超过c),则唯一的方案是每个人坐一艘,否则,他应该选择能和他坐船的人中最重的一个。
import java.util.Arrays;
public class 乘船问题 {
public static void main(String[] args) {
int[] w= {1,2,3,4,5,6,7,8,9,10};
int n=w.length;
int c=10;
Arrays.sort(w);
int cntOfPerson=n;
int cntOfBoat=0;
int p1=0;
int p2=n-1;
while (cntOfPerson>0) {
if(p1+p2>c) {
p2--;
cntOfPerson--;
cntOfBoat++;
}else {
p1++;
p2--;
cntOfPerson-=2;
cntOfBoat++;
}
}
System.out.println(cntOfBoat);
}
}