题目:
有N根绳子,第i根绳子的长度为Li,现在需要M根等长的绳子,可以对N根绳子进行任意裁剪但不能拼接,那么这M根绳子的最长长度是多少。
代码:
def max_length(m,n,length_data):
max_length = float(max(length_data))
min_length = 0.0
while(abs(max_length - min_length) >= 1e-3):
mid = min_length + float(max_length - min_length)/2.0
num = 0
for i in range(m):
num += int(length_data[i]/mid) # 可重复使用
if num >= n:
# 满足条件 尝试增加能切出来的最大长度看是否依旧能满足条件
min_length = mid
res = mid
else:
# 不满足条件 尝试减小能切出来的最大长度
max_length = mid
return res
# 保存每根绳子的长度
length_data = [3,5,4]
print(max_length(3,3,length_data))