题解:
import java.util.Arrays;
public class Practice_乘船问题 {
public static void main(String[] args) {
int[] w = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int C = 10;//每一艘船最大承重量
Arrays.sort(w);
int cntOfPerson = w.length;//剩余的人的数量
int cntOfBoat = 0;//船的数量
int p1 = 0;
int p2 = w.length - 1;
while (cntOfPerson > 0) {
if (w[p1] + w[p2] > C) {
cntOfPerson--;
cntOfBoat++;
p2--;//尾指针向左移
} else if (w[p1] + w[p2] <= C) {
cntOfPerson -= 2;
cntOfBoat++;
p1++;
p2--;
}
}
System.out.println("最少乘船数量:" + cntOfBoat);
}
}