|
发表于 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])) |
评分
-
查看全部评分
|