一辆汽车加满油后可行驶 d公里。旅途中有若干个加油站,指出应在哪些加油站停靠加油(每次加油都加满),使沿途加油次数最少。
第一行有 2 个正整数d和 k(k<=1000 ),表示汽车加满油后可行驶d公里,且旅途中有 k个加油站。 第二行有 k个整数,表示第 k 个加油站与第k-1 个加油站之间的距离。 第 0 个加油站表示出发地,汽车已加满油(到达最后一个加油站则认为到达目的地)。
输出:
输出最少加油次数。如果无法到达目的地,则输出“No Solution!”。
输入:
7 7
1 2 3 4 5 1 6
输出:
3
n, k = map(int, input().split())
d = list(map(int, input().split()))
c = 0 # 初始化加油次数
now = n # 初始化当前油量
for i in range(k ): # 开始旅途~
if now < d[i]: # 判断当前油量是否可以到达下一个加油站
c += 1 # 如果无法到达,则需要加油。加油次数+1
now = n # 重新初始化油量
now -= d[i] # 减去到达下一站所需油量
if now < 0: # 判断此时当前油量
c = 'No Solution' # 当前油量为负,说明无法到达下一站,输出无解
break # 不能再愉快的旅行了
print(c) # 输出结果
代码如下:
def oil(n, distance):
i = 0 # 起始站加油算第一次(已加满的条件下,设为0)
count = 0 # 当前站与下一站的距离
for one in distance:
if one > n:
print("No Solution!")
return -1
count += one # 试着继续累加公里数,尽量跑最长距离
if n < count: # 加满油开始持续跑,超过当前加油距离累加公里数
#print('%d公里开始处加油'%(one))# 累加距离等于或超过一次跑最长距离,要加油了
count = one # 加满油,从新开始累计跑的距离
i += 1 # 计加油次数
return i
d, k = map(int, input().split())
dis = list(map(int, input().split()))
num = oil(d, dis)
if num > 0:
print(num)
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!