【C++】零钱兑换的始端---柠檬水找零

欢迎来CILMY23的博客

本篇主题为 零钱兑换的始端---柠檬水找零

个人主页:CILMY23-CSDN博客

个人专栏系列: Python | C++ | C语言 | 数据结构与算法

感谢观看,支持的可以给个一键三连,点赞关注+收藏。


 前言:

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


一、题目解析

 

从题目中我们可以知道以下信息:

  1.  一开始我们手头没有任何零钱,如果我们一开始没有净交易,那么后续是无法找零钱的
  2.  顾客一次只买一杯,按照账单bill支付的顺序
  3. 正确找零返回true,错误或者无法找零返回false
  4. 顾客只会给我找币值5,10,20美元

二、原理和代码

 首先,顾客只会给我三种币值的美元,所以我对这三种情况讨论:

 那根据贪心,我们会尽可能保留5美元的,把币值大的先找出去。

代码如下: 

class Solution {
public:bool lemonadeChange(vector<int>& bills){int five = 0;int ten = 0;for (auto x : bills){if (x == 5){five++;}elseif(x == 10){if(five == 0)return false;five--;ten++;}else{if(ten && five){ten--;five--;}elseif(five >= 3){five -= 3;}elsereturn false;}}return true;}
};

三、贪心策略的证明

 证明策略:交换论证法

 证明目的:把最优解逐步通过交换调整为贪心解

 证明过程:

假设贪心解是 a b c d e f ,最优解(正确解)是 E B C D A F ,在不破坏最优解“最优性质”和“正确”的前提下,把最优解调整为贪心解。对上述三种情况进行讨论:

假设顾客只找给我5美元和十美元,最优解和贪心解是没区别的,它们只有三种情况,5美元收下,找五美元和没零钱找不了。

所以重点讨论的地方就是顾客给我二十美元,贪心和最优解不一样的时候怎么办?

假设后面没用到十美元交换,我们可以用十美元来替代我第一次交换的两张5美元

假设后面有用到十美元交换,我们可以用前面第一次的两张5美元来交换后面的十美元,即调整顺序并不影响最优和正确性,于是所有情况我们都论证完毕了。贪心解就是最优解。 

 


 感谢各位同伴的支持,本期C++就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞,关注+收藏,若有不足,欢迎各位在评论区讨论。  

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

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

相关文章

嘴尚绝卤味:传承经典,缔造美食新风尚

卤味&#xff0c;作为中国传统美食的代表之一&#xff0c;历经千年的传承与发展&#xff0c;早已成为无数食客餐桌上的宠儿。而在这个美食盛行的时代&#xff0c;嘴尚绝卤味凭借其独特的口感和精湛的工艺&#xff0c;成为卤味市场中的佼佼者&#xff0c;引领着卤味文化的新潮流…

图数据库 之 Neo4j 与 AI 大模型的结合绘制知识图谱

引言 随着信息时代的到来&#xff0c;海量的文本数据成为了我们获取知识的重要来源。然而&#xff0c;如何从这些文本数据中提取出有用的信息&#xff0c;并将其以可视化的方式展示出来&#xff0c;一直是一个具有挑战性的问题。近年来&#xff0c;随着人工智能技术的发展&…

Vue3组件通信全解析:利用props、emit、provide/inject跨层级传递数据,expose与ref实现父子组件方法调用

文章目录 一、父组件数据传递N个层级的子组件vue3 provide 与 injectA组件名称 app.vueB组件名称 provideB.vueC组件名称 provideCSetup.vue 二、使用v-model指令实现父子组件的双向绑定父组件名称 app.vue子组件名称 v-modelSetup.vue 三、父组件props向子组件传值子组件 prop…

MyBatis认识

一、定义 MyBatis是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java O…

【热门话题】ElementUI 快速入门指南

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 ElementUI 快速入门指南环境准备安装 ElementUI创建 Vue 项目安装 ElementUI 基…

SpringBoot之远程调用的三大方式

为什么要使用远程调用&#xff1f; SpringBoot不仅继承了Spring框架原有的优秀特性&#xff0c;而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中&#xff0c;存在着本模块的代码需要访问外面模块接口&#xff0c;或外部url链接的需求…

LeetCode 每日一题 ---- 【2079.给植物浇水】

LeetCode 每日一题 ---- 【2079.给植物浇水】 2079.给植物浇水方法&#xff1a;模拟-维护水的剩余量 2079.给植物浇水 方法&#xff1a;模拟-维护水的剩余量 模拟浇水和灌水的步骤就可以了&#xff0c;当剩余水大于等于需要浇的水&#xff0c;步数累加1即可&#xff0c;当剩余…

Golang 开发实战day13 - Reciver Functions

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day13 - 接收…

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

目录 海豚调度器的主要功能和特点 海豚调度器与Oozie、Azkaban等调度器相比的优势

第42天:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

第四十二天 一、PHP-MYSQL-SQL注入-常规查询 1.PHP-MYSQL-Web组成架构 MySQL(统一管理) ​ root&#xff08;自带默认&#xff09; ​ 网站A testA ​ 网站B testB MySQL(一对一管理) ​ testA用户 ​ 网站A testA ​ testB用户 ​ 网站B testB access无数据库用户 m…

三勾软件 / 三勾点餐系统门店系统,java+springboot+vue3

项目介绍 三勾点餐系统基于javaspringbootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 在…

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境&#xff1a; 负载调度器&#xff1a;配置双网卡 内网&#xff1a;172.168.1.11(ens33) 外网卡&#xff1a;12.0.0.1(ens37)二台WEB服务器集群池&#xff1a;172.168.1.12、172.168.1.13 一台NFS共享服务器&#xff1a;172.168.1.14客户端&#xff…

Android的NDK开发中Cmake报缺少对应的x86的so文件

需要实现一个串口操作的命令。 供应商提供了2个so文件。 分别是 armeabi-v7a 和 arm64-v8a 添加到对应的cpp下。 在CMakeLists.txt里添加so文件 # 添加预编译的库 add_library(libxxx SHARED IMPORTED)# 设置库的路径 set_target_properties(libxxx PROPERTIES IMPORTED_…

springboot和html学院教务管理系统

端口号根据你实际运行程序的端口号来 访问地址&#xff1a;localhost:8080 学生 : student1 123456 管理员&#xff1a;admin 123456 老师&#xff1a;2020001 123456 sys_user 表是账号和密码

Android 11 新增设备支持语言

Android 系统默认支持多个国家语言。实现对整个android系统的语言设置,我们可以通过系统提供的 LocalePicker 里的方法来实现。 一、APP实现 1、权限设置 首先需要系统级的权限,在 AndroidManifest.xml 里申请权限: android:sharedUserId=“android.uid.system” <!--…

am62x edp屏调试

文章目录 am62x edp屏调试问题现象问题分析问题测试1 dtbo文件问题?2 ko文件问题3 驱动问题?4 问题定位:问题总结:附录设备结点:启动打印:am62x edp屏调试 问题现象 使用5.10内核配置的edp屏可以正常显示,但更新成6.1的内核后,不仅edp不正常工作,hdmi也不能正常工作…

隔离流量优化网络传输

不要将长流和短突发流(或者大象流和老鼠流)混部在一起&#xff0c;我建议用切片或虚通道将它们在全链路范围彻底隔离&#xff0c;而不仅仅在交换机上配合着大肆宣讲的高端包分类算法配置一些排队调度。 也不必扯泊松到达&#xff0c;帕累托分布&#xff0c;这些概念在论文建模…

Cocos Creator UlLabel的使用详解

前言 Cocos Creator是一款由Cocos公司开发的跨平台游戏开发引擎&#xff0c;它集成了Cocos2d-x引擎和Cocos Studio编辑器&#xff0c;可以帮助开发者快速地创建2D和3D游戏。在Cocos Creator中&#xff0c;UI系统是非常重要的一部分&#xff0c;而在UI系统中&#xff0c;UILabe…

Flutter笔记:Widgets Easier组件库(13)- 使用底部弹窗

Flutter笔记 Widgets Easier组件库&#xff08;13&#xff09;使用底部弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

使用HashMap实现,对一个字符集进行哈夫曼编码

最终达到的效果: 调用一个类 class HuffmanCodin{.....} 使用类中的静态方法&#xff0c;获取哈夫曼编码&#xff1a; 事前准备——哈夫曼树的节点定义 class Node implements Comparable<Node> {int weight;//权重Node left;Node right;char ch;//关键字&#xff0c…