Обход всех городов за минимальную стоимость
Динамическое программирование
Экстремальная
Дано n городов и матрица стоимостей dist размера n×n, где dist[i][j] — стоимость переезда из города i в город j.
Нужно посетить каждый город ровно один раз, начав с любого города и закончив в любом (возвращаться в начальный город не требуется). Верните минимальную суммарную стоимость такого маршрута.
Матрица может быть несимметричной: dist[i][j] и dist[j][i] могут различаться. Для n = 1 ответ равен 0.
Перебор всех n! маршрутов не уложится в ограничения. Известно решение за O(2^n · n²) — попробуйте описать состояние парой «какие города уже посещены» и «в каком городе мы сейчас».
Сигнатура функции
min_route_cost(n: int, dist: list[list[int]]) -> int
Примеры
| Вход | Ожидаемый результат |
| [3, [[0, 1, 5], [1, 0, 2], [5, 2, 0]]] | 3 |
| [1, [[0]]] | 0 |
1решили
1пытались
100%успешность
Войдите, чтобы решить →