【python算法书】硬币找零问题?

作者: 阿牛02 | 来源:发表于2019-08-13 20:35 被阅读0次

题目:窝窝要去商店买棒棒糖,她怎么样才能用最少个数的硬币买到心仪的糖果呢?

分析:找零问题的贪心算法求解。为了满足我们要用最少的硬币数量支付指定额度的金额这一要求,每次使用可选的最大金额付款符合一贯“贪心”的习惯。根据常识,在当前阶段,使用可用的最大面值金额支付剩余待找零额度,可以使后面的待找零额度尽量小,从而更有可能促使之后支付需要的硬币数量尽量少。

code:

def findO(par, sum):

    # 从面值最大的元素开始遍历

    i = len(par) - 1

    while i >= 0:

        if sum >= par[i]:

            n = int(sum // par[i])  # 用该币值的个数

            change = n * par[i]  # 扣掉该币值使用的总数

            sum = float("%.6f" % (sum - change))  # 剩余的钱

            print("用了%d个%1.2f元硬币"%(n, par[i]))

        i -= 1

if __name__ == "__main__":

    par = [0.05, 0.1, 0.2, 0.5, 1.0, 2.0]  # 存储每种硬币面值,从小到大

    sum = 5.65

    findO(par, sum)

相关文章

  • 【python算法书】硬币找零问题?

    题目:窝窝要去商店买棒棒糖,她怎么样才能用最少个数的硬币买到心仪的糖果呢? 分析:找零问题的贪心算法求解。为了满足...

  • 最小硬币找零问题

    最小硬币找零问题是硬币找零问题的一个变种。硬币找零问题是给出要找零的钱数,以及可以用的硬币面额d1...dn及其数...

  • 刷题笔记(经典题目汇总)

    1.硬币找零问题(腾讯q币找零) 解法:贪心策略 只考虑最少需要的硬币总数而不考虑具体的组合对于 1,2,5,10...

  • Java硬币找零问题

    假如有硬币1,3,5如何用最少的硬币数量找回11元,硬币可复用 要得到1元需要的硬币个数n=f(1) = f(0)...

  • 动态规划算法

    要点 简化问题 减少计算量 套路 定义状态 定义动作 定义边界 缓存已知 硬币找零问题 问题:有三种面值硬币1,3...

  • 硬币找零问题——动态规划

    问题阐述 给定一些面值的硬币(数量不限)和需要找零的金额,求一个找零所需硬币数最少的方案。现实生活中因其面值的特殊...

  • 腾讯正常批笔试一:硬币题

    问题描述 小Q去商场购物,经常会遇到找零的问题。小Q现在手上有n种不同面值的硬币,每种面值的硬币都有无限多个。为了...

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

    问题描述 小Q手上有 n 种不同面值的硬币,每种硬币有无限多个。为了方便购物,他希望带尽量 少的硬币,但是要能组合...

  • 2019腾讯笔试题

    题目背景:小Q去商场购物,经常会遇到找零的问题。 小Q现在手上有n种不同面值的硬币,每种面值的硬币都有无限多个。 ...

  • 322、Coin Change

    参考 [LeetCode] Coin Change 硬币找零 题目描述:You are given coins o...

网友评论

    本文标题:【python算法书】硬币找零问题?

    本文链接:https://www.haomeiwen.com/subject/byhijctx.html