【算法:贪心】:贪心算法介绍+基础题(四个步骤);柠檬水找零(交换论证法)

🎁个人主页:我们的五年

🔍系列专栏:C++课程学习

🎉欢迎大家点赞👍评论📝收藏⭐文章

前言:

暑假马上就要留校学习算法了,现在先学习一下基本的算法打打基础。本篇要讲的是贪心算法的介绍,然后会讲两道基础的题目,用的贪心证明方法是:交换论证法。目前对贪心算法还是很感兴趣的,贪心没有固定的解法,遇到不会的,希望我可以把这种贪心算法搞清楚。

贪心算法:

🍩1.概念:

贪心算法是把问题分成很多步,每次都是选择看起来最优的那一步,就可以得到正确的答案。能用贪心解决的问题是具有贪心性质的。要想能用贪心解题,需要充分挖掘题目的条件。而且没有固定的模式。

🍩2.步骤:

对于一道贪心题,要解决并学会,可以分为:

1.题目解析。2.算法原理。3.手撕代码。4.贪心策略证明。

对于一道贪心题,可能前三步很简单,但是第四步一定是可以多多思考,多多证明的。在证明贪心策略的过程也是很有趣的。

🍩3.对于学习贪心算法建议:

贪心算法,没有一个固定的模式,我不是孙膑。我更多是去学习别人的贪心方法,并理解运用。所以在遇到有一些贪心问题的时候,我们可能没有任何思路,但是我们可以看别人的贪心解法,然后学习别人的思路。能把别人想出来的东西运用,也是一节伟大事情。

例题1

LeetCode:柠檬水找零(860)

860. 柠檬水找零 - 力扣(LeetCode)

🍩1.题目解析:

●每杯柠檬水售价5元。

●顾客排队购买。

●顾客向你付给你的钞票面额:5元,10元,20元。对于10元的,要找一张五块钱。对于20元的,你可以找三张五块钱,也可以找一张五块钱和一张十块钱。

●一开始没有零钱,也就是只能有顾客的钱来找零。

🍩2.算法原理:

1.对于顾客给的五块钱,我们直接收下,不需要找零。


2.对于顾客付的十块钱,我们将十块钱收下,然后进行找五块钱。


3.对于顾客付的二十块钱,我们有两种找零的方式。

找零一:找三张五块钱的。

找零二:找一张十块钱的, 找一张五块钱的。

🚁🚁🚁

从上面三种情况来看,五块钱有两种用途,十块钱只有一种用途(十块钱只能用来找零二十块钱的)。贪心解的情况下就是在找零二十块钱的时候,如果有十块钱就先用十块钱找(即找零方法一)。如果没有十块钱,才用三张五块钱进行找零。

🍩3.手斯代码:

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int five=0,ten=0;   //20元有和没有都没关系for(auto& i:bills){if(i==5)++five;else if(i==10){if(five){--five;++ten;}elsereturn false;}else if(i==20){//有十块钱时,先用十块钱if(ten&&five){--ten;--five;}else if(five>=3){five-=3;}elsereturn false;}}return true;}
};

🍩4.证明贪心策略:

在这道题中,贪心解和正确解的不同只发生在找零二十块钱的时候,贪心解用十块钱和五块钱进行找零,正确解用三张五块钱的进行找零。

🎡情况一:对于贪心解中用的十块钱,如果后面我们没有在正确解中用这十块钱,就直接用十块钱替换正确解的两种五块钱就得到了贪心解。

🎡情况二:如果后面正确解要用贪心解里的十块钱,那么此时用两张五块钱进行替换,也是满足最优性质的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/41205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出 LangChain 与智能 Agent:构建下一代 AI 助手

我们小时候都玩过乐高积木。通过堆砌各种颜色和形状的积木&#xff0c;我们可以构建出城堡、飞机、甚至整个城市。现在&#xff0c;想象一下如果有一个数字世界的乐高&#xff0c;我们可以用这样的“积木”来构建智能程序&#xff0c;这些程序能够阅读、理解和撰写文本&#xf…

基于DMAIC降低气缸体水套芯磕碰伤率

在制造业的激烈竞争中&#xff0c;产品质量的提升一直是企业追求的目标。气缸体作为汽车发动机的核心部件&#xff0c;其生产过程中的质量控制尤为重要。今天&#xff0c;深圳天行健企业管理咨询公司就来分享一下如何运用DMAIC&#xff08;定义、测量、分析、改进、控制&#x…

基于java+springboot+vue实现的电影院购票系统(文末源码+Lw)274

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装电影院购票系统软件来发挥其高效地信息处理的作用&#xf…

光电液位传感器在宠物洗澡机的应用

光电液位传感器在宠物洗澡机中的应用&#xff0c;为洗澡机的智能化管理提供了重要支持和保障。这种先进的传感技术不仅提升了设备的操作便捷性&#xff0c;还大幅度提高了洗澡过程的安全性和效率。 宠物洗澡机作为宠物护理的重要设备&#xff0c;其水位的控制至关重要。光电液…

C语言 do while 循环语句练习 中

练习&#xff1a; 4.编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 // 编写代码&#xff0c;演示多个字符从两端移动&#xff0c;向中间汇聚 //welcome to china!!! //w ! //we !! //wel !!! //.... //welco…

【图卷积网络】GCN基础原理简单python实现

基础原理讲解 应用路径 卷积网络最经典的就是CNN&#xff0c;其 可以提取图片中的有效信息&#xff0c;而生活中存在大量拓扑结构的数据。图卷积网络主要特点就是在于其输入数据是图结构数据&#xff0c;即 G ( V , E ) G(V,E) G(V,E)&#xff0c;其中V是节点&#xff0c;E是…

graphviz 报错: No module named ‘graphviz‘

在使用完命令 conda install graphviz 后此时已经显示已安装&#xff0c;但仍然报错&#xff01; 我是使用以下命令解决的。 conda install python-graphviz

Python爬虫教程第0篇-写在前面

为什么写这个系列 最近开发了个Python爬虫的脚本&#xff0c;去抢一个名额&#xff0c;结果是程序失败了&#xff0c;中间有各种原因&#xff0c;终究还是准备不足的问题。我想失败的经验或许也可贵&#xff0c;便总结一下当初从0开始学Python&#xff0c;一步步去写Python脚本…

【docker nvidia/cuda】ubuntu20.04安装docker踩坑记录

docker nvidia 1.遇到这个错误&#xff0c;直接上魔法(科学上网) OpenSSL SSL_connect: Could not connect to nvidia.github.io:443 这个error是运行 NVIDIA官方docker安装教程 第一个 curl 命令是遇到的 2. apt-get 更新 sudo apt update遇到 error https://download.do…

平面设计考试题

考试题 缺省页作用&#xff1a;缓减缺省页带来的负面情绪&#xff0c;增加s用户与产品的粘度&#xff0c;提升产品的用户体验 网站基本类型 c端b端 c端 面向用户和消费者的 门户站 产品网站 企业网站 电商网站 专题页面 游戏网站 视频网站 h5移动端 四大门户网站:新浪&…

在Ubuntu上安装VNC服务器教程

Ubuntu上安装VNC服务器方法&#xff1a;按照root安装TeactVnc&#xff0c;随后运行vncserver输入密码&#xff0c;安装并打开RickVNC客户端&#xff0c;输入服务器的IP&#xff0c;最后连接输入密码即可。 VNC或虚拟网络计算&#xff0c;可让您连接到远程Linux / Unix服务器的…

百数教学:如何用分析图表助力报表可视化?

表单收集的数据是决策的重要依据&#xff0c;而报表则是分析和处理这些数据的关键工具。 通过报表&#xff0c;我们能够进行明细查询&#xff0c;深入了解每一条数据的细节&#xff1b;通过汇总功能&#xff0c;用户能够快速掌握整体情况&#xff1b;计算平均值有助于用户评估…

SCT612404通道,高效高集成,摄像头模组电源集成芯片

集成三路降压变换器&#xff0c;1CH高压BUCK,2CH低压Buck >HVBuck1:输入电压4.0V-20V,输出电流1.2A,Voo300mV/500mV >LVBuck2:输入电压2.7V-5V,输出电流0.6A , 固定1.8V输出 ;LVBuck3:输λ2.7V-5V,输出电流1.2A,可设定固定输出&#xff1a; 1 . 1 V / 1 . 2 V / 1 . 3 …

for nested data item, row-key is required.报错解决

今天差点被一个不起眼的bug搞到吐&#xff0c;就是在给表格设置row-key的时候&#xff0c;一直设置不成功&#xff0c;一直报错缺少row-key&#xff0c;一共就那两行代码 实在是找不到还存在什么问题... 先看下报错截图... 看下代码 我在展开行里面用到了一个表格 并且存放表格…

公共事件应急日常管理系统-计算机毕业设计源码40054

公共事件应急日常管理系统的设计与实现 摘 要 本研究基于Spring Boot框架&#xff0c;设计并实现了公共事件应急日常管理系统&#xff0c;旨在提升公共事件的应急响应和日常管理效率。系统包括应急资源管理、物资申请管理、物资发放管理、应急培训管理、科普宣教管理、公共事件…

Redis 多数据源 Spring Boot 实现

1.前言 本文为大家提供一个 redis 配置多数据源的实现方案&#xff0c;在实际项目中遇到&#xff0c;分享给大家。后续如果有时间会写一个升级版本&#xff0c;升级方向在第5点。 2.git 示例地址 git 仓库地址&#xff1a;https://github.com/huajiexiewenfeng/redis-multi-…

【解码现代 C++】:实现自己的智能 【String 类】

目录 1. 经典的String类问题 1.1 构造函数 小李的理解 1.2 析构函数 小李的理解 1.3 测试函数 小李的理解 1.4 需要记住的知识点 2. 浅拷贝 2.1 什么是浅拷贝 小李的理解 2.2 需要记住的知识点 3. 深拷贝 3.1 传统版写法的String类 3.1.1 拷贝构造函数 小李的理…

共享门店模式:实体门店合伙制的解决方案

在当今这个快速迭代的商业时代&#xff0c;共享门店模式以其独到的商业智慧和灵活的运营策略&#xff0c;正逐步成为推动行业变革的重要力量。它巧妙地融合了共享经济的前沿理念与线下门店的实体优势&#xff0c;开辟了一条资源高效整合与价值深度挖掘的新路径。 共享门店模式…

MySQL学习(8):约束

1.什么是约束 约束是作用于表中字段上的规则&#xff0c;以限制表中数据&#xff0c;保证数据的正确性、有效性、完整性 约束分为以下几种&#xff1a; not null非空约束限制该字段的数据不能为nullunique唯一约束保证该字段的所有数据都是唯一、不重复的primary key主键约束…

微信小程序毕业设计-走失人员的报备平台系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…