题目描述
一辆汽车加满油后可以行驶n千米。旅途中有k个加油站。若要使沿途的加油次数最少,请设计一个有效的算法。
输入
第一行有2个正整数n和k,表示汽车加满油后可行驶nkm,且旅途中有k个加油站。接下来1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油,且在第0个加油站满油不算加油,第k+1个加油站表示目的地。(请处理到文件尾)
输出
最少加油次数。如果无法到达目的地,则输出“No Solution”。
样例输入 Copy
7 7
1 2 3 4 5 1 6 6
样例输出 Copy
4
n, k = map(int, input().split()) # 获取汽车加满油后可行驶的距离n和加油站数量k
distances = list(map(int, input().split())) # 获取每个加油站之间的距离列表
current_position = 0 # 当前汽车所在位置
refill_count = 0 # 加油次数
for distance in distances:
# 如果当前汽车无法到达下一个加油站
if distance > n:
print("No Solution")
break
# 如果到达下一个加油站后无法到达目的地
if current_position + distance > n:
current_position = distance # 在当前加油站加满油
refill_count += 1
else:
current_position += distance # 继续前进
if current_position < distances[-1]: # 最后一个加油站无法到达终点
print("No Solution")
else:
print(refill_count)
上面代码在oj上运行,答案错误百分之50,应该如何修改?