題目描述
六一兒童節,老師帶了很多好喫的巧克力到幼兒園。每塊巧克力j的重量爲w[j],對於每個小朋友i,當他分到的巧克力大小達到h[i] (即w[j]>=h[i]),他纔會上去表演節目。老師的目標是將巧克力分發給孩子們,使得最多的小孩上臺表演。可以保證每個w[i]> 0且不能將多塊巧克力分給一個孩子或將一塊分給多個孩子。
輸入描述:
第一行:n,表示h數組元素個數 第二行:n個h數組元素 第三行:m,表示w數組元素個數 第四行:m個w數組元素
輸出描述:
上臺表演學生人數
示例1
輸入
3 2 2 3 2 3 1
輸出
1
代碼+解析:
#!D:/workplace/python
# -*- coding: utf-8 -*-
# @File : 六一兒童節.py
# @Author: WangYe
# @Date : 2019/3/6
# @Software: PyCharm
"""
輸入
3
2 2 3
2
3 1
輸出
複製
1
"""
"""
思路:先逆序,然後臨近匹配。例如: 4 2 2 1 和 3 2
那最後肯定是 4對3,然後2對2
"""
N = int(input())
N_list = input()
N_list1 = N_list.split(" ")
child= []
for a in N_list1:
child.append(int(a))
M = int(input())
M_list = input()
M_list1 = M_list.split(" ")
sugar = []
for b in M_list1:
sugar.append(int(b))
child.sort(reverse = True) #逆序
sugar.sort(reverse = True)
X = [] #存儲巧克力
Y = [] #存儲孩子座標
temp = 0
for q in range(M):
for w in range(temp,N):
if sugar[q] >= child[w]:
X.append(q)
temp = w #防止supar中出現重複匹配
break
if temp == N-1: #當直接到最後一個child時,直接跳出
break
if len(X)>N: #防止sugar的數量大於child
print(N)
else:
print(len(X)) #正常輸出