题目描述
六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力i的重量为w[i],对于每个小朋友j,当他分到的巧克力大小达到h[j] (即w[i]>=h[j]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。
输入描述
第一行:n,表示h数组元素个数
第二行:n个h数组元素
第三行:m,表示w数组元素个数
第四行:m个w数组元素
输出描述
上台表演学生人数示
示例1
输入
3
2 2 3
2
3 1
输出
1
分析:m为巧克力个数,n为学生个数,w[i]表示第i颗巧克力分别的大小,h[j]表示第j个同学要求的巧克力大小,当w[i]>=h[j]时才会上台表演,对w[i],h[j]由小到大排序后比较,吃的最少的小朋友先选最少的巧克力,依次往后。
package com.nowcoder.schoolEnrollment2018;
import java.util.Arrays;
import java.util.Scanner;
/**
* @ClassName: PinDuoDuo3.java
* @Description:每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他会上去表演节目。
* 老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]>0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。
* @author: Henray
* @version: 1.0
* @Date: 2019年3月7日
*/
public class PinDuoDuo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // n个学生
int[] h = new int[n];
for (int i = 0; i < n; i++) {
h[i] = sc.nextInt();
}
int m = sc.nextInt(); // m个巧克力
int[] w = new int[m];
for (int i = 0; i < m; i++) {
w[i] = sc.nextInt();
}
Arrays.sort(h); // 学生排序
Arrays.sort(w); // 巧克力排序
int num = 0;
int s = 0;
for (int i = 0; i < w.length; i++) {
for (int j = s; j < h.length; j++) {
if (w[i] >= h[j]) {
num++;
s = j + 1;
break;
}
}
}
System.out.println(num);
}
}