面经题解——多车出发求最远

问题描述:
10辆车,从同一个起点出发,拥有相同的油量,一车油可以跑100km,中途其他车的油可以分给其他车,每辆车子到了最远处之后,所有车都必须返回原点。求这个车队最远的车能走多远。

思路:
所有车一起前进,第一辆车到达能将剩余油分给其他车将其余车邮箱补满,并保证自己返回的条件下,开始分油:
100=a+a+9*a
剩余车沿用此模式,即:
100=b+(a+b)+8*b
100=c+(a+b+c)+7*b

最后的车行驶一段距离后返程:
100=j+(a+b+…+j)
显然最远距离为:
L= j ∑ j

python3实现:

a=10+1
s=[0]*a
to=0
for i in range(1,len(s)):
    s[i]=float((100-to)/(a))
    to+=s[i]
    a-=1
print(sum(s))
点赞