Python帮助:能够这样做的最小油箱容量是多少?

米兰图斯克是宇宙中最富有的人。在毕生致力于推进我们的太空探索技术之后,他终于准备好退休了。作为一名太空爱好者,他想做的第一件事就是依次访问 n 颗行星 p1、p2、……、pn。他目前在 p0 星球上。

米兰知道行星 pi 和 pi + 1 之间的距离(对于 0 ≤ i < n)是 d[i] 光年。他的宇宙飞船每光年使用 1 吨化石燃料。他从一个满的油箱开始,可以在 n 颗行星中的任何一个上加满油箱(但他不能在两个行星之间用完)。建造宇宙飞船进行燃料补给的成本很高。由于经济拮据(他没那么富有),他最多可以加满油箱 k 次。

为了省钱并使他的飞船更轻,米兰正在寻找最小的油箱,使他能够完成他的太空旅行并到达行星 pn。使他能够这样做的最小油箱容量是多少?

Input

Input由两行组成:
第一行包含由单个空格分隔的 n 个整数。这些数字指定了列表 d。
第二行包含一个整数 k。

Output

输出一个整数:米兰飞船的最小油箱容量(以吨为单位)。

限制

1 ≤ n ≤ 100
0 ≤ k ≤ 100
1 ≤ d[i] ≤ 100

时间限制

您的程序必须在任何有效输入的 1 秒内完成运行。

Sample Input 1

2 1 1
3

Sample Output 1

2

Sample1 解释

容量至少应为2;否则,米兰无法从 p0 移动到 p1。
如果容量是 2,米兰可以简单地在 p1 上填满他的油箱。请注意,在他加满油之前,他的油箱是空的,但这没关系,因为他已经在 p1 上。

Sample Input 2

1 1 1 1 1 1 1
2

Sample Output 2

3

Sample Input 3

5 5 5 5
4

Sample Output 3

5

我的大致思路是这样的

最多有100个输入,并且每两个加油站的距离小于等于100,所以我们可以判断出,最大距离为 100 * 100 = 10000
那不论k值为多少,最后的答案的取值范围一定是0 ~ 10000
正着来
从前往后loop每一个答案,
当答案为n时,需要加几次油?
当你第一次找到 需要加 <= k 次油的时候,说明你找到答案了,返回n值。

但是不知道该怎么用代码表达
无力跪
总感觉好复杂

我的代码:
current_fuel_in_tank = capacity_of_tank
refuelling_required = 0
n = len(d)
for i in range(0,n-1):
current_fuel_in_tank -= d[i]
if(current_fuel_in_tank < d[i+1]):
refuelling_required += 1
current_fuel_in_tank = capacity_of_tank


import math
def min_volume(dists, k):
    dists_arr = dists.split(' ') #数字字符串分割成数组
    dist_numbers = list(map(int, dists_arr)) #数字字符串数组转为数字数组
    max_dist = max(dist_numbers) #计算行星间距离最大值max_dist
    dist_total = sum(dist_numbers) #计算总的行程dist_total
    #邮箱容积volume不得小于max_dist,否则会半路没油
    #假设volume为max_dist,看开始满油+k次油(即k+1箱油)是否足以完成总行程
    #能够完成,那么volume=max_dist
    if max_dist*(k+1)>=dist_total: 
        volume = max_dist
        return volume
    #不能够完成的话,总行程dist_total/总加油次数k+1,就是邮箱最小容积(math.ceil函数向上取整)
    else:
        volume = math.ceil(dist_total/(k+1))
        return volume
dists = '2 1 1'
k = 3
volume = min_volume(dists, k)
print('dists:',dists, '  k:', k, ' volume:', volume)
dists = '1 1 1 1 1 1 1'
k = 2
volume = min_volume(dists, k)
print('dists:',dists, '  k:', k, ' volume:', volume)
dists = '5 5 5 5'
k = 4
volume = min_volume(dists, k)
print('dists:',dists, '  k:', k, ' volume:', volume)

img