【问题描述】
求解乘船问题。有 n 个人,第 i 个人体重为 wi(0≤i<n)。每艘船的最大载重量均为 C,且最多只能乘两个人。用最少的船装载所有人。
【编程实现】JAVA版:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int c=in.nextInt();
int a[]=new int[n];
for(int i=0;i<n;i++) {
a[i]=in.nextInt();
}
Arrays.sort(a);
int ans=0,i=0,j=n-1;
while(i<j)
{ if(a[i]+a[j]<=c) {
ans++;
i++;
j--;
}
else {
ans++;
j--;
}
}
if(i==j)System.out.println(ans+1);
else System.out.println(ans);
}
}
【执行结果】