《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q05)

程序员的算法趣题.pdf.zip 面试算法题 立即下载

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~

在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6)

Q05 还在用现金支付吗
    当下,坐公交或者地铁时大部分人都是刷卡的。不过,时至今日还在用现金支付的人还是比想象的多。本题我们以安置在公交上的零钱兑换机为背景。
    这个机器可以用纸币兑换到 10 日元、 50 日元、 100 日元和 500 日元硬币的组合,且每种硬币的数量都足够多(因为公交接受的最小额度为 10 日元,所以不提供 1 日元和 5 日元的硬币)。
    兑换时,允许机器兑换出本次支付时用不到的硬币。此外,因为在乘坐公交时,如果兑换出了大量的零钱会比较不便,所以只允许机器最多兑换出 15 枚硬币。譬如用 1000 日元纸币兑换时,就不能兑换出“100 枚 10 日元硬币”的组合


问题
    求兑换 1000 日元纸币时会出现多少种组合?注意,不计硬币兑出的先后顺序。
                 

 

def calc_money(money_bank, total_money, total_max_coin, out_combo=[]):
    if len(money_bank) == 0:
        return False
    res_money_bank = money_bank[1:]

    coin = money_bank[0]
    cur_max_coin = int(total_money / coin)
    total_result = []
    if cur_max_coin > total_max_coin:
        cur_max_coin = total_max_coin
    for coin_count in range(cur_max_coin, -1, -1):
        cur_combo = [coin]*coin_count
        rest_money = total_money - coin*coin_count
        if rest_money == 0:
            total_result.append(out_combo+cur_combo)
        else:
            sub_calc = calc_money(res_money_bank, rest_money, total_max_coin-coin_count, out_combo+cur_combo)
            if sub_calc:
                total_result += sub_calc
    return total_result

result = calc_money([500, 100, 50, 10], 1000, 15)
print("共有%s种组合,分别为:\n%s" % (len(result), '\n'.join([str(sub) for sub in result])))

 运行结果:

                共有20种组合,分别为:
                [500, 500]
                [500, 100, 100, 100, 100, 100]
                [500, 100, 100, 100, 100, 50, 50]
                [500, 100, 100, 100, 100, 50, 10, 10, 10, 10, 10]
                [500, 100, 100, 100, 100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
                [500, 100, 100, 100, 50, 50, 50, 50]
                [500, 100, 100, 100, 50, 50, 50, 10, 10, 10, 10, 10]
                [500, 100, 100, 50, 50, 50, 50, 50, 50]
                [500, 100, 100, 50, 50, 50, 50, 50, 10, 10, 10, 10, 10]
                [500, 100, 50, 50, 50, 50, 50, 50, 50, 50]
                [500, 100, 50, 50, 50, 50, 50, 50, 50, 10, 10, 10, 10, 10]
                [500, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50]
                [500, 50, 50, 50, 50, 50, 50, 50, 50, 50, 10, 10, 10, 10, 10]
                [100, 100, 100, 100, 100, 100, 100, 100, 100, 100]
                [100, 100, 100, 100, 100, 100, 100, 100, 100, 50, 50]
                [100, 100, 100, 100, 100, 100, 100, 100, 100, 50, 10, 10, 10, 10, 10]
                [100, 100, 100, 100, 100, 100, 100, 100, 50, 50, 50, 50]
                [100, 100, 100, 100, 100, 100, 100, 50, 50, 50, 50, 50, 50]
                [100, 100, 100, 100, 100, 100, 50, 50, 50, 50, 50, 50, 50, 50]
                [100, 100, 100, 100, 100, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50]

程序员算法趣题——随书源码 《程序员算法趣题》随书的课后源码。作者是增井敏克。 立即下载

相关推荐

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

程序员的算法趣题:Python全解(2023-03-07:追加github repo)

本系列(将)包含《程序员的算法趣题》(增井敏克著,绝云译)中所有问题的详细分析和Python解答。原书使用Ruby/Javascript实现,看不懂(????)。较复杂的问题的解说也受限于书的篇幅以及不同的人的思维模式的不同,不容易跟得上书中的解说。归根结底还是以独立自主完全想清楚写出可行代码并验证通过才能达成最好的学习效果,在此过程中所走的所有弯路所陷入的坑都可以转变为经验教训。即便有时候算法不够好运行效率不够高也无妨,因为毕竟这才是真正属于自己的。

chenxy_bwave的专栏 2110

四大厂商网络设备巡检命令实战指南:华为、华三、锐捷、思科

本文详细介绍了华为、华三、锐捷、思科四大厂商网络设备的巡检命令实战指南,涵盖硬件状态、软件运行和网络功能等核心维度。通过具体命令示例和实用技巧,帮助网络工程师高效完成设备巡检,预防潜在故障,确保网络稳定运行。

weixin_29235923的博客 390

几个简单而又有趣的Python算法题

1. 前言 作为一个合格的程序员,如果仅仅只是对工具或者框架熟悉,而不清楚算法,这肯定不是一个合格的,能够经得起时间考验的程序员。如果把程序员比作是一个武林高手,那么他的算法能力就是他的内功,只有内功修炼深厚了,学习框架,语言或者工具等才会快,并且能够真正的理解他们的用法。作为一个半路出家的低端程序员,为了锻炼自己的算法能力,于是决定在leetcode上刷题来提高自己。就这段时间以来我所遇到的一...

qq_40056626的博客 1万+

水文模型新手必看:用SWAT-CUP做参数率定,如何正确设置预热期、率定期和验证期?(附数据准备避坑指南)

本文详细介绍了使用SWAT-CUP进行水文模型参数率定的完整流程,重点解析了预热期、率定期和验证期的正确设置方法,并提供了数据准备的避坑指南。通过实操步骤和常见问题解决方案,帮助新手快速掌握SWAT-CUP参数率定的核心技巧,提升水文模型模拟精度。

weixin_26875109的博客 373

Loupe Browser实战指南:解锁10xGenomics单细胞数据的可视化奥秘

本文提供了Loupe Browser的实战指南,帮助用户无需编程即可探索和可视化10xGenomics单细胞数据。文章详细介绍了从数据导入、界面导航到细胞亚群鉴定、差异基因分析的核心操作流程,并分享了高级技巧与避坑指南,是快速上手这一强大可视化工具的必备参考。

weixin_29313423的博客 206

程序员的算法趣题Q38: 填充白色

程序员的算法趣题Q38: 填充白色 详细解题分析和python代码

chenxy_bwave的专栏 721

Modbus4J vs EasyModbus4J:哪个Java库更适合你的工业项目?

本文深入对比了Java领域两大Modbus通信库Modbus4J与EasyModbus4J。Modbus4J设计稳健、类型安全,适合复杂业务集成;EasyModbus4J基于Netty,在高并发场景下性能更优。文章从架构、性能、API及生产环境多维度分析,为工业物联网项目选型提供决策依据。

weixin_28475533的博客 310

程序员的算法趣题Q32: 榻榻米的铺法

程序员的算法趣题Q32: 榻榻米的铺法 详细解题分析及python代码

chenxy_bwave的专栏 1774

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

通过WorkVisual连接KUKA机器人的具体方法

通过WorkVisual连接KUKA机器人的具体方法

Robot_PLC_HMI_Automation 6842

《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q07)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~ 在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6) Q07 日期的二进制转换      把年月日表示为 YYYYMMDD 这样的 8 位整数,然后把这个整数转换成二进制数并且逆序排列,再把得到的二进制...

cloudly89的专栏 294

YOLOv11全网首发:注意力独家魔改 | 具有切片操作的SimAM注意力,魔改SimAM助力小目标检测

1)直接作为注意力使用,效果秒杀SimAM;2)高效和卷积结合,代替原始网络的卷积操作;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1571

程序员的算法趣题Q29: 合成电阻的黄金分割比

程序员的算法趣体Q29: 合成电阻的黄金分割比 详细解题分析以及python代码

chenxy_bwave的专栏 7382

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

程序员的算法趣题Q09: 落单的男女

程序员的算法趣题Q09的详细解题分析和python代码

chenxy_bwave的专栏 883

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

程序员的算法趣题 python3 - (4)

注:以下题目来自《程序员的算法趣题》– [日]增井敏克著,原书解法主要用Ruby实现,最近在学Python,随便找点东西写写当做练习,准备改成Python3实现,顺便增加一些自己的理解。 16.三根绳子折成四边形 三根绳子折成3个四边形,一根摆成正方形,两根摆成长方形,会出现长方形面积之和等于正方形面积的情况,如: 绳子长度25, 1*9 = 9 2*8 = 16 5*5 = 25...

孤舟钓客 677

程序员的算法趣题Q61: 不交叉一笔画下去

程序员的算法趣题Q61: 不交叉一笔画下去 详细解题分析和python题解

chenxy_bwave的专栏 1282

程序员的算法趣题Q24: 完美的三振出局

程序员的算法趣题Q24: 完美的三振出局的详细解题分析和python代码,最后还有一个彩蛋

chenxy_bwave的专栏 1698

程序员的算法趣题Q37: 翻转7段码(1)

程序员的算法趣题Q37: 翻转7段码 详细接替分析及python代码,本题解考虑的是暴力(全量)搜索,下一篇将考虑递归搜索

chenxy_bwave的专栏 1652

《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q11)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~ 在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6) Q11 斐波那契数列      斐波那契数列由两个 1 开端,其后的每一位数字都是前两位数字之和。譬如 1 和 1 的和为 2, 1 和 2 的和...

cloudly89的专栏 290

《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q06)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~ 在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6) Q06 (改版)考拉兹猜想       “考拉兹猜想”是一个数学上的未解之谜。 考拉兹猜想 对自然数 n 循环执行如下操作。 ·n 是...

cloudly89的专栏 291

程序员的算法趣题 python3 - (2)

注:以下题目来自《程序员的算法趣题》– [日]增井敏克著,原书解法主要用Ruby实现,最近在学Python,随便找点东西写写当做练习,准备改成Python3实现,顺便增加一些自己的理解。 6.考拉兹猜想 考拉兹猜想: 对自然数n: 若n为偶数,n /= 2 若n为奇数,n = n*3 + 1 循环操作,无论初始值为多少,最终得到1(1->4->2->1循环) 修改:...

孤舟钓客 961

《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q24)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~ 在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6) Q24 完美的三振出局     对喜爱棒球的少年而言,“三振出局”是一定要试一次的。这是一个在本垒上放置 9 个靶子,击打投手投来的球,命中靶子的...

cloudly89的专栏 322

程序员的算法趣题 python3 - (1)

1.回文数 求十进制、二进制、八进制表示都是回文数的数字中,大于十进制数10的最小值。 num = 11 while True: s10 = str(num) s2 = str(bin(num))[2:] s8 = str(oct(num))[2:] if s10 == s10[::-1] and s2 == s2[::-1] and s8 == s8[::...

孤舟钓客 1052

算法趣题(二)

1. 翻牌问题 问题:有一组写着数字 111~100100100 的纸牌,按照从小到大的顺序排列着。最开始所有的纸牌都背面朝上。接下来按照规则翻牌:第一次从第 222 张纸牌开始,隔一张牌翻牌,于是第 2、4、6、8、...、1002、4、6、8、... 、1002、4、6、8、...、100 位置的牌会变成正面朝上;第二次从第 333张纸牌开始,每隔 222 张牌翻牌,于是第 3、6、9、......

Go的博客 701

程序员的算法趣题 python3 - (6)

注:以下题目来自《程序员的算法趣题》– [日]增井敏克著,原书解法主要用Ruby实现,最近在学Python,随便找点东西写写当做练习,准备改成Python3实现,顺便增加一些自己的理解。 26.高效的立体停车场 最近,一些公寓等建筑也都配备了立体停车场。立体停车场可以充分利用窄小的土地,通过上下左右移动来停车、出库,从而尽可能多地停车。现在有一个立体停车场,车出库时是把车往没有车的位置移动,从...

孤舟钓客 796
上一篇: 《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q04)
下一篇: 《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q06)
JemmaLiu
博客等级 码龄15年 9粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值