news 2026/9/20 5:21:37

分饼干(华为机试经典贪心真题|Python AC完整代码,牛客可直接提交)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分饼干(华为机试经典贪心真题|Python AC完整代码,牛客可直接提交)

分饼干(华为机试经典贪心真题|Python AC完整代码,牛客可直接提交)

题目描述

假设你是一位很棒的家长,想要给孩子们分饼干。
每个孩子i有一个胃口值g[i],代表这个孩子需要的饼干最小尺寸;
每块饼干j有尺寸s[j]
如果饼干尺寸s[j] >= g[i],这个孩子可以得到这块饼干。
每个孩子最多只能拿一块饼干,每块饼干只能分给一个孩子
求最多能满足多少个孩子。

输入描述
第一行:孩子胃口数组,空格分隔
第二行:饼干尺寸数组,空格分隔

输入样例

1 2 3 1 1

输出样例

1

解释:只能满足胃口为1的孩子

样例2

1 2 1 2 3

输出

2

✅贪心思路

  1. 孩子胃口从小到大排序;饼干从小到大排序
  2. 双指针:小饼干优先喂胃口最小的孩子(局部最优,全局最优)
  3. 如果当前饼干可以满足当前孩子:计数+1,两个指针都后移;
    不满足:这块饼干太小,看下一块饼干,饼干指针后移

完整可提交代码

importsysdefmain():lines=sys.stdin.read().splitlines()# 读取孩子胃口数组g=list(map(int,lines[0].split()))# 读取饼干数组s=list(map(int,lines[1].split()))# 贪心核心:两个数组都升序排序g.sort()s.sort()child=0# 孩子指针cookie=0# 饼干指针count=0# 满足的孩子数量whilechild<len(g)andcookie<len(s):ifs[cookie]>=g[child]:# 当前饼干可以满足这个孩子count+=1child+=1cookie+=1else:# 饼干太小,看下一块饼干cookie+=1print(count)if__name__=="__main__":main()

机试重点笔记

  1. 核心策略:两个数组都升序,小饼干优先喂胃口最小的
  2. 边界情况(测试时一定要想到)
    • 没有孩子 / 没有饼干:输出0
    • 所有饼干都太小,满足不了任何人:输出0
    • 饼干数量远多于孩子
  3. 贪心适用原因:优先消耗最小能满足的饼干,把大饼干留给胃口更大的孩子,不会浪费大饼干

做题模板提取(可以背)

g.sort()s.sort()c1=c2=ans=0whilec1<len(g)andc2<len(s):ifs[c2]>=g[c1]:ans+=1c1+=1c2+=1else:c2+=1print(ans)

对比区分:

  • 分饼干:双数组排序 + 双指针贪心
  • 活动选择:单数组,按结束时间排序贪心
  • 区间合并:区间数组,按起点排序贪心
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 5:07:30

EMC测试条件控制实战指南:环境、供电、布置与特殊要求

做产品开发这些年&#xff0c;我几乎每个项目都要和 EMC 测试打交道。很多人以为 EMC 测试就是把样品送到实验室、插上电、跑一遍就完事&#xff0c;等拿到报告才发现问题一大堆&#xff1a;不是样品在实验室里工作状态不对&#xff0c;就是供电条件不符合标准要求&#xff0c;…

作者头像 李华