【每日一题】---------裁木料

按键精灵小Q 按键精灵小Q 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

作者:神梦科技

 

给了一些木头。它由一个整数数组woods (参数1)给出,每个元素是木头的长度。将它们切成小块,以保证您可以拥有等于或多于n (参数 2)具有相同长度的块(长度应该是整数)。你的任务是找出你能从这些树林中得到的最长长度是多少?返回小块的最大长度。

一个例子:
woods = [232, 124, 456], n = 7
我们拥有的木头长度分别是232,124,456,需要裁成7份同长度的木头,要求尽可能的长,结果应该是114,因为 232 可以裁成2段114长度的木头,剩余4(可以丢弃),124可以裁一段剩余10,456可以裁成4段无剩余。裁出来的数量是 2+1+4 = 7段,如果我们裁成115则最多只能裁出6段一样长的。

注意:
中的所有数字woods 都是正整数;
n 也是一个正整数;
结果应该是整数长度的小块,尽可能长;
请注意优化代码避免超时


题目难度:一般 

 

Import "SmAssert.dll"

 

Function 裁木料(数组, 等份)

    // 您的代码写在这里

End Function

 

 

SmAssert 裁木料(Array(232, 124, 456), 7) = 114

SmAssert 裁木料(Array(232, 124, 456), 20) = 38

SmAssert 裁木料(Array(232, 124, 456), 1) = 456

SmAssert 裁木料(Array(232, 124, 456), 2) = 232

SmAssert 裁木料(Array(232, 124, 456), 3) = 228

SmAssert 裁木料(Array(1, 1, 1), 4) = 0

SmAssert 裁木料(Array(1, 1, 1), 3) = 1

SmAssert 裁木料(Array(739,236,932,583,524,983,682,55,679,582,283,439,405,245,627,819,452,540,412,919,444,589,102,104,937,940,484,804,522,49,745,435,17,26,918,423,790,27,884,655,651,799,786,71,503,910,461,804,520,661,706,953,144,878,847,663,476,230,848,258,500,907,45,345,221,934,562,428,459,320,894,944,727,294,786,451,888,266,362,878,950,690,900,810,953,433,181,267,370,874), 45) = 582

 

参考题解

Import "SmAssert.dll"

 

VBSBegin

    ' 求最大值

    Function Max(Arr)

        Dim i, result

        For i = 0 To UBound(Arr)

            If Arr(i) > result Then 

                result = Arr(i)

            End If

        Next

        Max = result

    End Function

VBSEnd 

Function 裁木料(数组, 等份)

    

    '【作者】:神梦无痕

    '【QQ】:1042207232

    '【Q群】:584781753

    

    Dim maxx, minn, m, num, i

    

    maxx = Eval(Join(数组, "+"))

    minn = Max(数组) \ 等份

    Do While (minn <= maxx)

        m = (minn + maxx) \ 2

        If m = 0 Then m = 0 : Exit Do

        num = 0

        For i = 0 To UBound(数组)

            num = num + (数组(i) \ m)

        Next

        If num >= 等份 Then 

            minn = m + 1

        Else 

            maxx = m - 1

            m = m - 1

        End If

    Loop

    裁木料 = m

End Function

 

 

SmAssert 裁木料(Array(232, 124, 456), 7) = 114 

SmAssert 裁木料(Array(232, 124, 456), 20) = 38

SmAssert 裁木料(Array(232, 124, 456), 1) = 456

SmAssert 裁木料(Array(232, 124, 456), 2) = 232

SmAssert 裁木料(Array(232, 124, 456), 3) = 228

SmAssert 裁木料(Array(1, 1, 1), 4) = 0

SmAssert 裁木料(Array(1, 1, 1), 3) = 1

SmAssert 裁木料(Array(739,236,932,583,524,983,682,55,679,582,283,439,405,245,627,819,452,540,412,919,444,589,102,104,937,940,484,804,522,49,745,435,17,26,918,423,790,27,884,655,651,799,786,71,503,910,461,804,520,661,706,953,144,878,847,663,476,230,848,258,500,907,45,345,221,934,562,428,459,320,894,944,727,294,786,451,888,266,362,878,950,690,900,810,953,433,181,267,370,874), 45) = 582

 

' 按键精灵带不动下面的例子

// SmAssert 裁木料(Array(200000000, 2147483645, 2147483646, 2147483647), 4) = 1073741823

// SmAssert 裁木料(Array(2000000000, 2147483645, 2147483646, 2147483647), 4) = 2000000000

原文地址:http://bbs.anjian.com/showtopic-701234-1.aspx

...全文

相关推荐

Java每日一题20160906

Java每日一题20160906,每日一道Java编程题,提高自己

weknow619

【华为OD机试真题 Java语言】137、最短木板长度 | 机试真题+思路参考+代码解析

小明有n块木板,第 i(1≤i≤n)块木板长度为ai。 小明买了一块长度为m的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。 小明想让最短的模板尽长。问小明加长木板后,最短木板的长度可以为多少?

KJ.JK

【华为OD机试真题 C++语言】137、最短木板长度 | 机试真题+思路参考+代码解析

>小明有n块木板,第 i(1≤i≤n)块木板长度为ai。 小明买了一块长度为m的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。 小明想让最短的模板尽长。问小明加长木板后,最短木板的长度可以为多少?

KJ.JK

【华为OD机试真题 Python语言】137、最短木板长度 | 机试真题+思路参考+代码解析

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习。小明买了一块长度为m的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。输入的第二行包含n个正整数,a1, a2…输出的唯一一行包含一个正整数,表示加长木板后,最短木板的长度最大可以为多少?小明想让最短的模板尽长。问小明加长木板后,最短木板的长度可以为多少?输入的第一行包含两个正整数, n表示木板数,m表示木板长度。小明有n块木板,第 i(1≤i≤n)块木板长度为ai。

KJ.JK

【华为OD机试真题 2025B卷】137、最短木板长度 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025B卷】137、最短木板长度 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为

KFickle
评论 1
收藏 已收藏
分享
返回顶部
按键精灵小Q
按键精灵小Q 按键精灵官方账号 按键精灵官方账号
按键精灵小Q 11 成员 188 内容