C++ 中的柠檬水摊位找零挑战2025年5月21日 | 阅读 8 分钟 交易处理是杂货店、自动售货机和我们的柠檬水摊每天都会遇到的一个重要的常见问题。柠檬水摊找零挑战是一个明确定义的算法问题,在现实世界中,适当的找零管理需要实时动态地分配找零,并在即时找零决策时受到资源限制。这个问题乍看起来很简单,但需要批判性的实时决策能力,这与供应商的运营和收银机的职责息息相关。 在我们经营柠檬水摊的过程中,我们以每杯 5 美元的价格出售饮料。付款方式接受 5 美元、10 美元和 20 美元的纸币,方便顾客使用。在买家收到他们想要的钱之前,卖家必须从之前顾客收到的钱中找给顾客正确的零钱。为了做好高效找零的准备,他需要能够跟踪现有的面额并做出即时的找零类型决策。然而,目标仍然是为顾客提供良好的服务,顾客永远不会缺乏足够的零钱。 最后,贪心算法方法是解决这类现实问题的一种强大方法。程序员通常采用工作流程方法来生成最佳结果,但在贪心算法中,程序员在每个处理阶段都会选择即时有利的路线。因为一开始会用较大的面额纸币作为找零,这有助于为将来的需求保留小面额纸币。 问题陈述柠檬水摊找零问题通过以下陈述在数学上定义:公司将每份柠檬水定价为 5 美元。一群顾客在付款购买柠檬水之前出现,他们使用 5 美元、10 美元或 20 美元的纸币付款。我们需要验证,使用早期顾客支付的钱找给所有顾客正确的零钱是否仍然可能。总金额受限于顾客之前的支付,因为资金是您唯一可用的找零来源。 这个问题有几个基本组成部分,我们将进行讨论。 输入问题的开头使用整数来表示顾客购买柠檬水的成本。顾客通过“5 5 10 20”这样的交易序列付款,其中第一次付款包含一张 5 美元的纸币,第二次付款包含另一张 5 美元的纸币,接着是一张 10 美元的纸币,然后第四次付款使用了一张 20 美元的纸币。 输出 系统生成布尔输出,正确找零会产生 true 响应,如果向任何顾客提供错误的找零,则出现 false。 规则和约束
目的需要评估当前规则是否允许为每一位等待的顾客提供付款服务。如果未能向顾客提供合适的找零,操作将失败。 示例 1输入 [5, 5, 5, 10, 20] 输出: true 说明
示例 2输入 [5, 5, 10, 10, 20] 输出: false 说明
所提出的问题结合了教育价值和一个有趣的 数组 复杂性。交易序列至关重要,因为不同的顾客组织在某些支付组合下可能会成功,但在其他组合下可能会失败。我们在开业初期分配 10 美元和 20 美元纸币的方式决定了未来为顾客有效服务的容量。这项任务展示了战略规划和资源管理为何对成功至关重要。 贪心算法是解决这个问题的最有效方法。在找零时,有必要先使用最大面值的纸币。当顾客使用 20 美元的纸币付款时,用一张 10 美元加上一张 5 美元进行交易,而不是用多张 5 美元纸币进行交易,这样更有意义。这种方法通过为未来的付款提供更好的可用性来节省小面额纸币。 柠檬水摊找零问题既为掌握贪心算法的执行提供了一个机会,也提高了我们解决实际情况中资源管理问题的能力。 方法和解决方案然而,贪心算法可以解决柠檬水摊找零问题。这种方法优化了资源分配,使得顾客的金库中可用的钱可以用于未来的客户交易。 关键思想显然,贪心策略是先通过提供最大可能面值的纸币来找零给顾客。小面额纸币在未来的现金交易中得到使用,并且该策略会保留它们。 例如
解决方案的步骤如下:初始化计数器通过两个 变量 系统存储我们当前的 5 美元和 10 美元账户,我们的其他纸币是它们的倍数。例如,five_count 和 ten_count。 遍历顾客因此,我们处理付款的步骤必须是先顾客。对于每次付款,
检查找零不足如果无法找零,则以 false 返回结束付款验证。 返回结果如果为 true,则为所有顾客返回成功结果。 示例让我们以一个例子来说明 C++ 中的柠檬水摊找零问题。 输出 Test case 1: True Test case 2: False Test case 3: False Test case 4: True Test case 5: False Test case 6: True 结论总之,柠檬水摊找零问题有助于发现关于资源使用和组织决策的重要管理实践。它能有效地找出是否能为所有顾客服务,并为所有顾客提供准确的找零。这是通过贪心算法实现的。改变这样一个过程是找零管理的基本策略之一。这意味着首先选择最大的纸币,以便其他顾客可以继续获得一些小面额纸币。 这种情况凸显了确保在所有支付场景下,无论是否有无现金收银机和 20 美元纸币的顾客交易,所验证的解决方案都有效的重要性。该解决方案对于输入大小为 n 次交易和音调大小来说,运行时间也为O(n)。 然而,它超越了代码创建,解决了适用于现实世界中资源有限且通过渐进式操作进行管理的场景的可部署决策框架。开发人员有了一种高效的算法创建方法,能够完美地兼顾性能和准确性。 柠檬水摊找零问题完整地展示了基本的监管结构如何产生引人注目的计算挑战。基本算法被介绍给学生,并与现实生活中的相关性相结合,这个问题非常适合作为新学生的有效练习。 |
C++ 标准库头文件中包含一个有用的函数 std::regex_search。它的目的是使用正则表达式模式来搜索目标字符串以查找匹配项。正则表达式是指定搜索模式的字符序列。它们在匹配模式方面非常有用……
阅读 4 分钟
在本文中,我们将讨论 Farey 序列、其数学性质以及如何使用 C++ 高效生成它。概述:一个重要的数学概念,在分数和数论中有应用,是 Farey 序列。Farey 序列是一个完全最小化的分数序列……
阅读 4 分钟
在本文中,我们将讨论 std::sort() 和 std::stable_sort() 在 C++ 中的区别。在讨论它们的区别之前,我们必须了解 std::sort() 和 std::stable_sort() 的语法、参数和示例。什么是 C++ 中的 std::sort() 函数? 在 C++ 编程中,std::sort() 函数是……
阅读 4 分钟
DSL 简介:领域特定语言 (DSL) 是一种特定于某个领域或问题区域的编程语言,与通用编程语言 (GPL) 相比,它提供了更高的效率和抽象。与 C++ 或 Python 等通用的机器级 GPL 不同,后者涵盖了广泛的...
阅读 10 分钟
简介 卡特兰数也可以明确地定义为一串自然数,它们在许多计数问题中再次出现:有效括号表达式的数量、二叉搜索树结构的数量以及网格中的路径数量等等...
7 分钟阅读
在本文中,我们将讨论 C++ 中的 std::to_underlying() 函数,包括其语法、参数、优点、缺点和示例。是什么?std::to_underlying() 函数是一个实用函数,用于获取枚举类型的底层整数值,该函数已在 C++17 (header ) 中添加。它...
5 分钟阅读
这是 <random> 库的一部分,用于模拟 Student's t 分布。在假设检验中经常使用它,因为样本数量通常较小,并且总体方差未知。t 分布,通常称为 Student's t 分布,是……
阅读 4 分钟
在本文中,我们将讨论带它们的,示例,时间复杂度,空间复杂度和应用程序。特殊两位数:满足特定数学要求的数字称为特殊两位数。根据此要求,原始两位数的...值
阅读 4 分钟
珠宝和石头问题是一个常见的编码练习,有时会在面试中出现。它要求我们估计石头中珠宝的比例。目标是找到 S 中也存在于 J 中的字符数,给定两个...
阅读 4 分钟
?在此系列结束时,您将拥有从头开始创建桌面程序的技能,因此让我们开始创建 C++ 桌面程序的有趣之旅。Win32 编程入门:C++ 中的 Win32 编程是指使用 Win32 API 创建 Windows 应用程序,Win32 API 是……
阅读 118 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India