时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:3655
本题知识点: Java工程师 C++工程师 招商银行信用卡中心 贪心 排序
校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
题目描述
假设你是一位很有爱的幼儿园老师,想要给幼儿园的小朋友们一些小糖果。但是,每个孩子最多只能给一块糖果。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的糖果的最小尺寸;并且每块糖果 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个糖果 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
注意:
你可以假设胃口值为正。
一个小朋友最多只能拥有一块糖果。
输入描述:
第一行输入每个孩子的胃口值 第二行输入每个糖果的尺寸 孩子数和糖果数不超过1000
输出描述:
能满足孩子数量的最大值
示例1
输入
1 2 3 1 1
输出
1
代码:
#include<bits/stdc++.h>
using namespace std;
int a[1010],b[1010],n,vis[1010];
int main()
{
int j=0,k=0;
while(cin>>n)
{
a[j++]=n;
if(getchar()=='\n')break;
}
while(cin>>n)
{
b[k++]=n;
if(getchar()=='\n')break;
}
memset(vis,0,sizeof(vis));
sort(a,a+j);
sort(b,b+k);
int flag=0;
for(int i=0; i<k; i++)
{
for(int k1=j-1;k1>=0;k1--)
{
if(b[i]>=a[k1]&&vis[k1]==0){
flag++;
vis[k1]=1;
break;
}
}
}
cout<<flag<<endl;
return 0;
}