CMB25. 漂流船问题
描述
输入描述
第一行输入参与漂流的人员对应的体重数组,输出描述
所需最小船只数示例1
输入:
1 2 3
输出:
1
C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-07-23
/* 把体重先排序并默认一个人一条船;从最轻的人开始,找一个剩下最重的人拼船,找到了船就减一, 没找到那后面更重的人也不可能找到了伙伴了直接break; */ #include <stdio.h> #include <stdlib.h> int cmp(const void *a,const void *b) { return *(int*)a-*(int*)b; } int main(void) { int len,i,l,r,limit=0,ans=0; int a[1024]; len = strlen(a); while(scanf("%d",&a[i])) { if(getchar()=='\n') break; i++; } scanf("%d",&limit); len=i+1; qsort(a,len,sizeof(int),cmp); l=0; r=len-1; while(l<=r) { if(l==r) { ans++; break; } if(a[l]+a[r]<=limit) { ans++; r--; l++; } else { ans++; r--; } } printf("%d",ans); }
C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2020-11-28
#include<stdio.h> int main(void) { int a[1000]; int n,i,j,c=1,limit=0,count=0; int temp=0,max,min; while(scanf("%d",&a[n])) { if(getchar()=='\n') break; n++; } scanf("%d",&limit); for(i=0;i<n;i++) { for(j=0;j<n-i;j++) { if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } } max=n; min=0; while(max>=min) { if(a[max]+a[min]<=limit) { max--; min++; } else { max--; } count++; } printf("%d",count); return 0; }