CMB20. 糖果分配
描述
输入描述
第一行输入每个孩子的胃口值输出描述
能满足孩子数量的最大值示例1
输入:
1 2 3 1 1
输出:
1
C 解法, 执行用时: 1ms, 内存消耗: 476KB, 提交时间: 2020-05-20
#include <stdio.h> int main() { int i = 0; int j = 0; int min = 0; int index = 0; int num1 = 0; int num2 = 0; int a[1000]; int b[1000]; char c = 0; for (i = 0; i < 1000; i++) { scanf("%d%c", &a[i], &c); if ('\n' == c) { break; } } num1 = i + 1; for (i = 0; i < 1000; i++) { scanf("%d%c", &b[i], &c); if ('\n' == c) { break; } } num2 = i + 1; for (i = 0; i < num1; i++) { min = a[i]; index = i; for (j = i + 1; j < num1; j++) { if (min > a[j]) { min = a[j]; index = j; } } if (i != index) { a[index] = a[i]; a[i] = min; } } //printf("%d %d %d\n", a[0], a[1], a[2]); for (i = 0; i < num2; i++) { min = b[i]; index = i; for (j = i + 1; j < num2; j++) { if (min > b[j]) { min = b[j]; index = j; } } if (i != index) { b[index] = b[i]; b[i] = min; } } //printf("%d %d %d\n", b[0], b[1], b[2]); i = 0; j = 0; index = 0; while(i < num1 && j < num2) { if (b[j] >= a[i]) { i++; index++; } j++; } printf("%d\n", index); return 0; }
C++14 解法, 执行用时: 2ms, 内存消耗: 236KB, 提交时间: 2019-12-11
#include<stdio.h> int main() { int child[1000],candy[1000]; int i,j; int m=0,n=0,temp=0,c=0,count=0; //输入胃口和糖果尺寸 while(scanf("%d",&child[m])) { m++; if (getchar()=='\n') break; } while(scanf("%d",&candy[n])) { n++; if (getchar()=='\n') break; } //将胃口和糖果尺寸排序 //胃口降序 for (i=0;i<m-1;i++) { for (j=0;j<m-i-1;j++) { if (child[j]>child[j+1]) { temp=child[j]; child[j]=child[j+1]; child[j+1]=temp; } } } //糖果降序 for (i=0;i<n-1;i++) { for (j=0;j<n-i-1;j++) { if (candy[j]>candy[j+1]) { temp=candy[j]; candy[j]=candy[j+1]; candy[j+1]=temp; } } } for (i=0;i<m;i++) { for(j=c;j<n;j++) { if (child[i]<=candy[j]) { c=j+1; count++; break; } } } printf("%d",count); }