Напишите программу, чтобы взять график (из стандартного ввода или файла, на ваш выбор) и найти кратчайший путь в графике.
Графики указываются в следующем формате:
A---S F--T
| / \ |
| / 5 0
|/ \|
D----3--E
A-Z: nodes in the graph
-|/\: edges in the graph
0-9: weights on the edges
<space>: all the holes
Все ребра ненаправлены и лежат вдоль одного из 8 основных направлений (то есть без изгибов). Ребра могут дополнительно содержать вес от 0 до 9. Вес не будет на последнем символе, который соединяет ребро с узлом (то есть ребра должны содержать не менее 3 символов, чтобы содержать вес). Невзвешенные ребра имеют вес по умолчанию 1.
Ваш код должен вычислить кратчайший путь между узлами S
и T
и напечатать длину и путь, как это:
5:SDEFT
Короче правильная программа выигрывает.
Да, вы должны проанализировать график, как я указал. Это большая часть проблемы, на самом деле. Самая короткая часть пути просто гарантирует, что ваш анализ правильный.
—
Кит Рэндалл
Формат ввода на самом деле слишком сложен, и imho на самом деле не так уж много добавляет к проблеме.
—
JPvdMerwe
Просто подумал, что люди здесь хотели бы попробовать что-то более сложное.
—
Кит Рэндалл
@SimpleCoder: я бы предположил,
—
монопространство
AS0,SD0,SE5,DE3,FE0,FT0
(вы можете опустить запятые, если каждая запись имеет длину 3 байта.)