有一更长度为n(单位:m)的钢筋,需要截成69cm,39cm,29cm.三种规格的材料,在三种规格至少截一段的情况下,如何截取才能使余下的材料最少?n由用户来输入。
既然是简单方法, 那就全部遍历好了。
n = float(input("材料长度"))
w = [0.69,0.39,0.29]
x = [int(n/m) for m in w]
# print(x)
less = n
r = [0,0,0]
for i0 in range(0, x[0]+1):
for i1 in range(0, x[1] + 1):
for i2 in range(0, x[2] + 1):
temp = round(n - i0 * w[0] - i1 * w[1] - i2 * w[2],2)
if temp < 0:
continue
if temp < less:
less = temp
r = [i0,i1,i2]
# print('新最优解', less, r)
print('最优解:剩余', less, )
for i in range(3):
print('截',w[i],'cm ',r[i],'段')
n = int(input())
res = n-69-39-29
ri = 1
rj = 1
rk = 1
for i in range(1, n//69):
for j in range(1, n//39):
for k in range(1, n//29):
slen = i*69+j*39+k*29
if slen > n:
break
else:
if n - slen < res:
res = n-slen
ri,rj,rk = i,j,k
print("69cm截取%d段"%ri)
print("39cm截取%d段"%rj)
print("29cm截取%d段"%rk)