每日一題(01.02)
阿新 • • 發佈:2019-01-13
Description
現在有一群乘客要乘船。一條船最多能乘坐兩個人,且乘客的總量不能超過帆船的最大承載量。請你設計程式儘可能減少花銷,即找到安置所有旅客的最少帆船數。
Input
第一行兩個整數w,n,80<=w<=200,1<=n<=300,w為一條帆船的最大承載量,n為人數。
第二行一組資料為每個人的重量,不大於船的最大承載量。
Output
每組人數所需要的最少帆船的條數。
Sample Input
85 6
5 84 85 80 84 83
Sample Output
5
Reference code
#include <stdio.h>
#include<stdlib.h>
int comp(const void*a,const void*b){
return *(int*)a-*(int*)b;
}
int main(){
int w,n;
scanf("%d%d",&w,&n);
int b=n,k=n-1,p[n];
for(int i=0;i<n;i++) scanf("%d",&p[i]);
qsort(p,n,sizeof(int),comp);
for(int i=0;i<k;i++)
for(int j=k;j> i;j--)
if(p[i]+p[j]<=w){
b--,k=j-1;
break;
}
printf("%d\n",b);
return 0;
}