1. 程式人生 > >每日一題(01.02)

每日一題(01.02)

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; }