首页 分享 切分木头算法

切分木头算法

来源:花匠小妙招 时间:2025-05-24 05:55

切分木头

最新推荐文章于 2024-07-25 09:22:49 发布

xy10242018 于 2020-05-02 22:56:50 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

切分木头

题目如下

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

问题

求当n=100,m=5时的最少切分次数。

思路

n厘米长的木头,需要切n-1刀才能得到全是1厘米长的小段。把切分木头的情形分为两种,人等木头和木头等人。第一种情形的切分数量就是所有被切分的木头的总数,第二种情形的切分数量就是总刀数减去第一种情形的数再与人数去分别相除和求余,最后两者相加。

我的解题代码

切分木头

public int qieGeMu(int n, int m) {//n是木头总长度,m是人数。 int base = 0; int num = 0; for (int i = 0; i < 50; i++) { base += Math.pow(2, i); if (m >= i * i && m < ((i + 1) * (i + 1))) { num = i + 1;//for循环是从0开始的,而这里要的是人等木头的最大次数,所以加1。 break; } } int diff = n - 1 - base; int re = diff / m; int yu = diff % m; return yu == 0 ? (num + re) : (num + re + 1); } 123456789101112131415

测试用例

@Test public void qieGeMuTou() { int n = 100; int m = 5; System.out.println("当n=" + n + ",m=" + m + "时的最少切分次数为:" + qieGeMu(n, m)); } 123456

程序运行结果如下
当n=100,m=5时的最少切分次数为:22

总结

这道题给出的目标作答时间为10分钟,而自己多用了好几倍时间,看来得加把劲了。

相关知识

九章算法
机器学习算法
一种手写体识别误差与用户花费平衡算法
决策树算法简介
木头工艺,哪些木头适合做枕头
木头适合做哪种花架子?哪种木头最适合?
木头纹理,名贵木头纹理图片
数据挖掘算法和实践(二):决策树(iris鸢尾花数据集)
烟雨江湖木头有什么用 木头作用详解
一根木头做手工艺品***(一根木头做手工艺品***教程)

网址: 切分木头算法 https://www.huajiangbk.com/newsview2017939.html

所属分类:花卉
上一篇: 中国传统建筑风雨桥——侗族桥梁建
下一篇: 弦切、刻切、径切,木材的切割有门

推荐分享