python算法之贪心算法(硬币找零问题)

本文介绍了如何使用贪心算法解决硬币找零问题。贪心算法通过不断选择当前条件下最优的选择来构建解决方案,例如在找零问题中优先使用最大面值的硬币。文章探讨了贪心选择性质和最优子结构性质,并提供了具体的应用示例和验证过程。
摘要由CSDN通过智能技术生成

硬币找零问题

贪心算法

贪心算法遵循某种既定原则,不断地选取当前条件下最优的选择来构造每一个子步骤,直到获得问题最终的求解。即在求解时,总是做出当前看来最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是局部最优解。

利用贪心算法解题,需要解决以下两个问题。

  1. 是问题是否适合用贪心法求解,即所求解问题是否具有贪心选择性质。所谓贪心选择性质,是指应用同一规则,将原问题变为一个相似的但规模更小的子问题,后面的每一步都是当前看似最佳的选择。这种选择依赖于已做出的选择,但不依赖于未做出的选择。从全局来看,运用贪心策略解决的问题在程序的运行过程中无回溯过程。
  2. 是问题是否具有局部最优解,从而通过选择一个贪心标准,可以得到问题的最优解。
    利用贪心算法解题的思路一般为:
    1>建立对问题精确描述的数学模型,包括定义最优解的模型。
    2>将问题分成一系列子问题,同时定义子问题的最优解结构。
    3>应用贪心算法原则可以确定每个子问题的局部最优解,并根据最优解模型,用子问题的局部最优解堆叠出全局最优解。

硬币找零问题

小明去商店里买棒棒糖,她怎么样才能用最少个数的硬币买到心仪的糖果呢?

问题描述

现在市面上有6中不同面值的硬币,各硬币的面值分别为5分、1角、2角、5角、1元、2元。

假定商店里各面值的硬币数量无限,小明想买一只标价为0.55元的棒棒糖。

解题:

展示一种情况:用面值为2角、1角和5分的共四枚硬币来付款。

另一种情况:小明用1元硬币支付,商店用2角和5分的硬币找零,同样需要4枚硬币。付1元,找:0.2+0.2&#

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎明之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值