算法刷题之十一贪心算法
1|0贪心算法
- 发饼干
- 合唱团
#发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。
示例 1:
输入: g = [1,2,3], s = [1,1]
输出: 1
解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。
示例 2:
输入: g = [1,2], s = [1,2,3]
输出: 2
解释:
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/assign-cookies
方法:
贪心算法:大尺寸的饼干能够满足胃口小的孩子,也能够满足胃口大的孩子,所以对于大尺寸的饼干要优先满足胃口大的孩子,而胃口小的孩子用小尺寸的饼干来喂,尽量减少浪费。
局部最优:充分利用饼干尺寸满足一个;全局最优:就是满足尽可能多的孩子。
首先将饼干数组和孩子数组进行排序,然后从后往前依次进行比较。
若 g[i] <= s[index]g[i]<=s[index]
并且 index >= 0index>=0
,则说明此时还有饼干并且当前遍历的这个饼干能够满足当前遍历的这个孩子的胃口(因为是从后往前进行遍历的,所以每次遍历的孩子和饼干都是当前两个数组中最大的)。
若 g[i] > s[index]g[i]>s[index]
并且 index >= 0index>=0
,则说明当前饼干的尺寸 s[index]
s[index](此时,饼干数组中饼干的最大尺寸)无法满足当前遍历的这个孩子的胃口 g[i]g[i](此时,当前孩子数组中胃口最大的孩子),需要将这个孩子舍弃(因为当前最大的饼干尺寸都不能够喂饱,再往前遍历时的饼干尺寸一定不可能满足这个孩子)。
若 index < 0index<0,说明此时饼干已经全部分完了,没有多余的饼干来喂剩余的孩子了,此时应该直接结束。
2|0合唱团
计算最少出列多少位同学,使得剩下的同学排成合唱队形
说明:
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
示例1:5,4,7,9,3,2
方法:先从左到有求出最长上升数组:1,1,2,3,1,1,然后从右到左求出最长上升数组:1,2,3,3,2,2。最后将两个相加,算出最大的即可。
3|0递归算法
4|0M个苹果放入N个盘子
题目:
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。
样例输入
7 3
样例输出
8
思路:
将m个苹果分到n个盘子中,可以有两种大的状态:
- 盘子有空的,可以空1个,2个,3个,一直到m-1个
- 盘子不为空,所有盘子都装满,那么全部都减去1并不影响摆放
__EOF__

本文链接:https://www.cnblogs.com/goldsunshine/p/14931063.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理