问题描述:一辆汽车加满油后可行驶nKm。旅途中有若干加油站。设计一个有效算法,指出应在哪些加油站停靠加油, 使沿途加油次数最少。并证明算法能产生一个最优解。
算法设计:对于给定的n和k个加油站的位置,计算最少加油次数。
数据输入:由文件input.txt给出输入数据,第一行有两个正整数n和k,表示汽车加满油后可行驶nKm,且途中有k个加油 站,接下来的一行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发 地,汽车已加满油,第k+1个加油站表示目的地。
结果输出:将计算的最少加油次数输出到文件output.txt。如果无法到达目的地,则输出“No Solution”。
输入文件示例: 输出文件示例:
input.txt output.txt
7 7 4
1 2 3 4 5 1 6 6
num = 0
x = 0
def main():
file = "input.txt"
greedy(file)
def greedy(file):
global num
global x
infile = open(file, 'r')
temp1 = infile.readline()
temp2 = infile.readline()
infile.close()
temp1 = temp1.strip('\n')
long = temp1.split(" ")
temp = temp2.split(" ")
n = int(long[0])
k = int(long[1])
for i in range(0, k + 1):
mid = int(temp[i])
if mid > n:
print("No solution!\n")
for i in range(0, k + 1):
mid = int(temp[i])
x = x + mid
if x > n:
num = num + 1
x = mid
outfile = open("output.txt", 'w')
outfile.write(str(num))
main()