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

本文介绍了《程序员的算法趣题》中关于切分木棒的问题,探讨了如何在限制人数m的情况下,将长度为n的木棒切分最少次数。举例说明了当n=8, m=3时,最少切分4次即可,同时给出了Python环境下,n=20, m=3时切分次数为8次,以及n=100, m=5时切分次数为22次的结果。" 108376109,9577854,CentOS 7.5 搭建Hadoop模板机指南,"['Hadoop', 'Linux系统管理', 'CentOS', '虚拟机配置']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

Q04 切分木棒

    假设要把长度为 n 厘米的木棒切分为 1 厘米长的小段,但是 1 根木棒只能由 1 人切分,当木棒被切分为 3 段后,可以同时由 3 个人分别切分木棒(图2 )。
    求最多有 m 个人时,最少要切分几次。譬如 n = 8, m = 3 时如下图所示,切分 4 次就可以了。

问题1
      求当 n = 20, m = 3 时的最少切分次数。
问题2
      求当 n = 100, m = 5 时的最少切分次数。

 

def cut_stick(n, m, current):
    if current > n:
        return 0
    elif current < m:
        return 1 + cut_stick(n, m, current*2)
    else:
        return 1 + cut_stick(n, m, current+m)

print("当 n = 20, m = 3 时的最少切分次数:%s" % cut_stick(20, 3, 1))
print("当 n = 100, m = 5 时的最少切分次数:%s" % cut_stick(100, 5, 1))

 运行结果:

           当 n = 20, m = 3 时的最少切分次数:8
          当 n = 100, m = 5 时的最少切分次数:22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值