首页 > 试题广场 >

糖果分配

[编程题]糖果分配
  • 热度指数:6904 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
假设你是一位很有爱的幼儿园老师,想要给幼儿园的小朋友们一些小糖果。但是,每个孩子最多只能给一块糖果。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的糖果的最小尺寸;并且每块糖果 j ,都有一个尺寸 s。如果 sj >= g,我们可以将这个糖果 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
注意:
你可以假设胃口值为正。
一个小朋友最多只能拥有一块糖果。


输入描述:
第一行输入每个孩子的胃口值

第二行输入每个糖果的尺寸

孩子数和糖果数不超过1000


输出描述:
能满足孩子数量的最大值
示例1

输入

1 2 3
1 1

输出

1
//最大的糖果尽可能给胃口一样的,填完了可以给胃口小的

import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            // int a = in.nextInt();
            // int b = in.nextInt();
            // System.out.println(a + b);
            String[] s1=in.nextLine().split(" ");
            int[] children=new int[s1.length];
            for(int i=0;i<s1.length;i++){
                children[i]=Integer.parseInt(s1[i]);
            }
            Arrays.sort(children);
            String[] s2=in.nextLine().split(" ");
            int[] candies=new int[s2.length];
            for(int i=0;i<s2.length;i++){
                candies[i]=Integer.parseInt(s2[i]);
            }
            Arrays.sort(children);
            Arrays.sort(candies);
            System.out.println(getResult(children,candies));
        }
    }
    public static int getResult(int[] children, int[] candies){
        //数组是有序的
        int cnt=0;
        //最大的糖果尽可能给胃口一样的,填完了可以给胃口小的

        int pointChild=children.length-1;
        int pointCandy=candies.length-1;

        while(pointChild>=0&&pointCandy>=0){
            if(children[pointChild]<=candies[pointCandy]){
                //说明可以分配
                cnt++;
                pointCandy--;
            }
            pointChild--;
        }
        return cnt;
        
    }
}

发表于 2023-03-25 11:10:17 回复(0)
import java.io.*;
import java.util.Arrays;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int count = 0;
        String[] str1 = bf.readLine().split(" ");
        int[] arr1 = new int[str1.length];
        for(int i = 0;i < str1.length;i++){
            arr1[i] = Integer.parseInt(str1[i]);
        }
        String[] str2 = bf.readLine().split(" ");
        int[] arr2 = new int[str2.length];
        for(int j = 0;j < str2.length;j++){
            arr2[j] = Integer.parseInt(str2[j]);
        }
        Arrays.sort(arr1);
        Arrays.sort(arr2);
        int a = arr2.length-1;
        int b = arr1.length-1;
        while(a>=0 && b>=0){
            if(arr2[a] >= arr1[b]){
                count++;
                a--;
            }
            b--;
        }
        System.out.println(count);
    }
}
发表于 2020-03-11 20:48:40 回复(0)