鱼C论坛

 找回密码
 立即注册
查看: 3965|回复: 50

[已解决]Python:每日一题 336

[复制链接]
发表于 2020-2-21 16:52:45 | 显示全部楼层
哈哈想了半天没想出正常的解法,因为这个有点复杂,他可能会出现【5,60,100】这样的情况,这就不单单是一个木头切开就行了,它可以取100的两截木头,60的一截木头,所以就只好笨笨的从最大的高度开始试......只是这样只能是整数高度的。
def fun(number,woods):
    woods.sort(reverse=True)#从大到小排列
    for hight in range(woods[0],woods[-1],-1):
        num=0   #第几根木头
        wood_copy=woods[:]
        for i in range(0,number):   #试试是否能凑满number根指定高度(hight)的木头
            if hight > wood_copy[num]:
                if num == len(woods)-1 or hight>wood_copy[num+1]:   #凑不齐,跳出循环,换下一个hight
                    break
                else:
                    num+=1
            wood_copy[num]-=hight
        else:#木头凑齐了
            return hight




print(fun(3,[2,3,100,100]))

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
zltzlt + 2 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-11 03:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表