贪心算法实例-问题分析(C++)
贪心算法实例-问题分析
饼干分配问题
有一群孩子和一堆饼干,每个小孩都有一个饥饿度,每个饼干都有一个能量值,当饼干的能量值大于等于小孩的饥饿度时,小孩可以吃饱,求解最多有多少个孩子可以吃饱?(注:每个小孩只能吃一整块饼干)如饼干能量值[6,3,1,2],小孩饥饿度[1,5,3],此时最多能有三个小孩可以吃饱。
贪心策略:让最容易吃饱的小孩先选择,从所有饼干中选择,能量值最小的饼干。
贪心思路
先对饼干和孩子的饥饿度进行排序。
然后从最小的饥饿度的孩子开始,尝试用能量值最小的饼干去满足。如果该饼干能满足当前孩子的需求,则分配给他;否则,尝试下一个饼干。
这样,优先满足最容易吃饱的孩子,保证尽可能多的孩子得到饼干。
代码实现
#include <iostream>
#include <vector>
#include <algorithm>using namespace std;// 分配饼干函数
int findContentChildren(vector<int>& children, vector<int>& cookies) {// 对饥饿度和饼干进行排序sort(children.begin(), children.end());sort(cookies.begin(), cookies.end());int childIndex = 0; // 孩子索引int cookieIndex = 0; // 饼干索引// 贪心算法进行匹配while (childIndex < children.size() && cookieIndex < cookies.size()) {// 如果当前饼干能满足当前孩子if (cookies[cookieIndex] >= children[childIndex]) {childIndex++; // 孩子得到了饼干}cookieIndex++; // 无论如何都要尝试下一个饼干}return childIndex; // 返回得到饼干的孩子数量
}int main() {// 输入数据vector<int> children = {1, 5, 3}; // 孩子的饥饿度vector<int> cookies = {6, 3, 1, 2}; // 饼干的能量值// 调用函数,输出结果int result = findContentChildren(children, cookies);cout << "最多有 " << result << " 个孩子可以吃饱。" << endl;return 0;
}
运行结果

相关文章:
贪心算法实例-问题分析(C++)
贪心算法实例-问题分析 饼干分配问题 有一群孩子和一堆饼干,每个小孩都有一个饥饿度,每个饼干都有一个能量值,当饼干的能量值大于等于小孩的饥饿度时,小孩可以吃饱,求解最多有多少个孩子可以吃饱?(注:每个小孩只能吃…...
Ubuntu20.04 配置虚拟显示器和切回物理显示器
1、安装软件,用中软安装虚拟显示器软件 sudo apt-get install xserver-xorg-core-hwe-18.04 sudo apt-get install xserver-xorg-video-dummy2、添加配置文件 进入 /usr/share/X11/xorg.conf.d/ 文件夹下创建xorg.conf文件 # 创建xorg.conf文件 touch xorg.conf …...
HTML 常用标签属性汇总一〈body〉标签
背景属性:包括:bgcolor,background <body background—color:black〉 背景颜色 <body background—image : url(image/bg.gif)〉 背景图片 <body background—attachment : fixed〉 固定背景 〈body background—repeat : repeat〉 重复排列—网页预设 〈b…...
Python yield关键字
1、什么是yield关键字 yield 是 Python 中的一个关键字,它用于定义生成器函数。生成器是一种特殊的迭代器,它可以在遍历过程中逐步产生值,而不是一次性生成所有值并将其存储在内存中。这使得生成器非常适合处理大量数据或无限序列࿰…...
tomcat的Mysql链接字符串问题
tomcat配置mysql链接需要改server.xml或content.xml。 但是server.xml或content.xml中mysql的配置看起来很古怪: url"jdbc:mysql://10.21.0.6:3306/hrdatabase?characterEncodinggbk&autoReconnecttrue" 而使用springboot开发java应用,使用ya…...
聊聊JVM G1(Garbage First)垃圾收集器
CMS的垃圾回收机制,为什么分为四步https://blog.csdn.net/genffe880915/article/details/144205658说完CMS垃圾回收器,必定要说到目前一般应用项目中都推荐的G1。G1在JDK1.7 update4时引入,在JDK9时取代CMS成为默认的垃圾收集器。它是HotSpot…...
【论文复现】隐式神经网络实现低光照图像增强
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 隐式神经网络实现低光照图像增强 引言那么目前低光照图像增强还面临哪些挑战呢? 挑战1. 不可预测的亮度降低和噪声挑战2.度量友好…...
Python知识分享第十九天-网络编程
网络编程 概述用来实现 网络互联 不同计算机上运行的程序间可以进行数据交互也叫Socket编程 套接字编程 三要素IP地址概述设备在网络中的唯一标识分类IPV4城域网13广域网22局域网31IPV6八字节 十六进制相关dos命令查看ipwindows: ipconfigmac和linux: ifconfig测试网络ping 域…...
C# 绘制GDI红绿灯控件
C# 绘制GDI红绿灯控件 using System; using System.Windows.Forms; using System.Drawing;public class TrafficLightControl : Control {protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);Graphics g e.Graphics;g.SmoothingMode System.Drawing.Drawin…...
Centos 8 服务器时间校正
Centos 8 服务器时间校正 使用chrony服务自动同步时间: 1.安装chrony: sudo dnf install chrony 2.启动并使chrony服务自动启动: sudo systemctl start chronyd sudo systemctl enable chronyd 3.添加配置置文件/etc/chrony.conf指向了可靠…...
模型 正则化方法(通俗解读)
系列文章 分享 模型,了解更多👉 模型_思维模型目录。控制模型复杂度,防过拟合。 1 正则化方法的应用 1.1 正则化方法在教育领域的应用案例 - 重塑教学模式 背景: 在教育领域,正则化方法可以被理解为对教学模式和学习…...
ffmpeg命令
ffmpeg是专门处理多媒体文件(包括音频、视频)的命令; ffplay 是 ffmpeg 软件包中的一个命令行多媒体播放器,它主要用于播放音视频文件; # fmpeg命令转换格式,将mp3格式转换为wav格式 ffmpeg -i input.mp3…...
使用 EasyExcel 实现高效的 Excel 读写操作
在日常开发中,Excel 文件的读写操作是一个常见的需求。EasyExcel 是阿里巴巴开源的一个高性能、易用的 Excel 读写库,可以大幅提高处理 Excel 文件的效率。它通过事件驱动模型优化了大数据量 Excel 的读写性能,非常适合处理大文件或高并发场景…...
数据结构(栈Stack)
1.前言: 在计算机科学中,栈(Stack)是一种基础而存在的数据结构,它的核心特性是后进先出(LIFO,Last In, First Out)。想象一下,在现实生活中我们如何处理一堆托盘——我们…...
Windows 11 环境下 条码阅读器输入到记事本的内容不完整
使用Windows11时,为什么记事本应用程序中的扫描数据被截断或不完整?为什么sdo 特殊字符的显示与Windows 10 记事本应用程序不同? 很多人认为和中文输入法有关,其实主要问题出在这个windows11下的记事本程序上,大家知道这个就可以了&#x…...
【串口助手开发】visual studio 使用C#开发串口助手,生成在其他电脑上可执行文件,可运行的程序
1、改成Release,生成解决方案 串口助手调试成功后,将Debug改为Release,点击生成解决方案 2、运行exe文件 生成解决方案后,在bin文件夹下, Release文件夹下,生成相关文件 复制一整个Release文件夹…...
Redis设计与实现读书笔记
Redis设计与实现读书笔记 Redis设计与实现[^1]简单动态字符串SDS的基础定义与C字符串的差别常数获取长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数二进制安全函数兼容 链表链表和链表节点的实现 字典字典的实现哈希表定义哈希表节点定义字典定义 哈希算法解决键冲突…...
UE5 Do Once 节点
在 Unreal Engine 5 (UE5) 中,Do Once 节点是一个蓝图节点,用于确保某个操作或代码只执行一次,直到某些条件被重置。它通常用于处理需要执行一次的逻辑,例如初始化、事件触发、或防止重复执行某些操作。 如何使用 Do Once 节点&a…...
javascript(前端)作为客户端端通过grpc与cpp(服务端)交互
参考文章 https://blog.csdn.net/pathfinder1987/article/details/129188540 https://blog.csdn.net/qq_45634989/article/details/128151766 前言 临时让我写前端, 一些配置不太懂, 可能文章有多余的步骤但是好歹能跑起来吧 你需要提前准备 公司有自带的这些, 但是版本大都…...
前端常用缓存技术深度剖析
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
