六一儿童节(探险)

题目描述

六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。

输入描述:

第一行:n,表示h数组元素个数
第二行:n个h数组元素
第三行:m,表示w数组元素个数
第四行:m个w数组元素

输出描述:

上台表演学生人数


思路:优先用最轻的巧克力满足需求最小的小孩
#include<iostream>
#include<algorithm>
using namespace std;
int h[1005],w[10005];
int main()
{
    int n,m;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>h[i];
    }
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>w[i];
    }
    sort(h+1,h+1+n);
    sort(w+1,w+1+m);
    int i,j,k=1,ans=0;
    for(i=1;i<=n;i++)
    {
        if(k>m)    break;
        for(j=k;j<=m;j++)
        {
            if(h[i]<=w[j])
            {
                ans++;
                k = j+1;
                break;
            }
        }
    }
    cout<<ans;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/fzuhyj/p/10688831.html