题目:
//有n个人,第i个人的重量是wi,每艘船的最大载重量均为c,且最多只能乘两个人,用最少的船装在所有人
//考虑最轻的人i,如果每个人都无法和他坐一艘船,那么,只能每个人单独做一艘船
//否则选择能和他一起坐船中最重的那个人一起坐
public static void main(String[] args) {
// TODO Auto-generated method stub
int w[] = {1,2,3,4,5,6,7,8,9,10};
int C = 10;
int boat = 0;
Arrays.sort(w);
//头指针
int p1 = 0;
//尾指针
int p2 = w.length-1;
//剩余人数
int zong = w.length;
while(zong>0) {
//如果最轻的和最重的加起来大于c的话,尾指针向前移一位,船的数量+1
if(w[p1]+w[p2]>C) {
p2--;
zong-=1;
boat++;
//如果加起来不大于c的话,头指针向后移一位,尾指针同时向前移一位,船的数量+1,人数-2
}else {
p1++;
p2--;
zong-=2;
boat++;
}
}
System.out.println(boat);
}
}