【发布时间】:2020-04-24 09:44:49
【问题描述】:
我有一个火车列表,其中包含各个车站的到达时间。
如果可能,我需要找到两个火车站之间最快的路径。
为了做到这一点,我甚至允许在整个旅程中换车一次。
但是,如果我换车,我还必须在上另一辆火车时加上等待时间。
以下是我的伪代码已经写了,但我在完成它时遇到了问题。尤其是在换车和计算等待时间的时候。谁能帮我解决这个问题并纠正我的伪代码。
function findFastestPath(source_station,dest_staion,waiting_time_at_current_station,travel_time_in_previous_train):
for each train_schedule in TrainList:
while train_schedule is not over:
if source_station equals train_schedule[station]
Then
if dest_staion in train_schedule
Then
if dest_staion[departure_time] > source_station[departure_time]
Then
duration = dest_staion[departure_time] - source_station[departure_time] + waiting_time_at_current_station + travel_time_in_previous_train
if mintime > duration
Then
mintime = duration
else:
travel_time_in_previous_train = next_station_to_source_station[departure_time]-source_station[departure_time]
waiting_time_at_current_station = next_train_departure_time - next_station_to_source_station[departure_time]
call findFastestPath(next_station_to_source_station, dest_staion, waiting_time_at_current_station, travel_time_in_previous_train)
return mintime
end function
for each source_station in Travel_Time_Matrix:
for each dest_staion in Travel_Time_Matrix:
call findFastestPath(source_station,dest_staion,0,0)
【问题讨论】:
标签: algorithm pseudocode dijkstra