![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Denic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.10.2005 Репутация: нет Всего: нет |
Помогите решить задачу:
На некоторой железнодорожной ветке расположено N станций, которые последовательно пронумерованны от 1 до N. Известны расстояния между некоторыми станциями. Надо вычислить длинны всех перегонов между станциями или указать, что это сделать нельзя (т.е информация либо противоречит или её недостаточно). Даже незнаю как возможно есть какие-нибудь мысли или хотя бы алгоритм решения. |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
можно попробовать свести это к системе линейных уравнений (относительно попарных расстояний между соседними станциями)
а там уже посмотреть есть ли решения -------------------- qqq |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 4 Всего: 484 |
Перенесено из Паскаля
|
|||
|
||||
AlexST |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 30.4.2006 Где: Москва Репутация: 2 Всего: 3 |
Строим граф по принципу: вершины связаны между собой, если известно расстояние между ними (лучше сразу в виде матрицы). Проверяем: если из любой вершины можно попасть в любую, то задание решаемо.
![]() ![]() Как найти расстояния писать надо? Это сообщение отредактировал(а) AlexST - 18.11.2006, 21:17 |
|||
|
||||
Denic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.10.2005 Репутация: нет Всего: нет |
Не надо Да скорее всего, я тут подумал и придумал как решать, надо завети квадратную матрицу
А дальше, я так думаю, надо вычислить неизвестные растояния. И посмотреть что получится. Диагональ над главной, будет ответом. |
|||
|
||||
AlexST |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 30.4.2006 Где: Москва Репутация: 2 Всего: 3 |
Зачем везде 1? Нуль тогда уж...
Вот тут надо следить, что бы все элементы были расположены над гл. диагональю
Дальше проверяем возможно ли связать все точки друг с другом. Здесь достаточно найти хотя бы один путь, проходящий по всем вершинам. Потом вычисляем пути. Т. е. заполняем все клетки над диагональю. Здесь напрашиваются закономерности: [i, j]=[j-1, i]+[i, j-1] [i, j]=[i-1, j]-[i-1, i] [i, j]=[i, j+1]-[i, j+1] Список можно продолжать. Теперь надо подумать как это организовать (итерации по вычислению путей, в смысле). Счас нет времени, подумаю - напишу ещё. ![]() Да, откуда задача? Это сообщение отредактировал(а) AlexST - 19.11.2006, 13:50 |
||||
|
|||||
Denic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.10.2005 Репутация: нет Всего: нет |
Лучше -1 так как данные могут быть данны не корректные и придется проверять есть ли решения или данные противоречивые. Например в тестах было данно расстояние от 1-го до 1-го равно 1. С районной олимпиады |
|||
|
||||
AlexST |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 30.4.2006 Где: Москва Репутация: 2 Всего: 3 |
Да хоть -800. ![]() ![]() ![]() Думал сёдня уже код дам, ан нет... P. S. Сосредотачиваться на возможности связать все точки друг с другом я не буду. Понятно: берем любую вершину и проверяем, можно ли из неё попасть во все остальные. |
|||
|
||||
Denic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.10.2005 Репутация: нет Всего: нет |
По моему задача не такая уж сложная, я тут набросал программку её надо ещё доделать, но она вроде всё правильно считает осталось, только сделать проверки на корректность данных и вывести результаты. Нужные числа над главной диагональю.
там тоже нечего сложного я думаю лучше сначала вычислить, а потом проверять. При корректных данных в массиве в строках числа от 0 (от главной диагонали) должны идти по возрастанию. Присоединённый файл ( Кол-во скачиваний: 10 ) ![]() |
|||
|
||||
AlexST |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 30.4.2006 Где: Москва Репутация: 2 Всего: 3 |
Не, ну всё далеко не так просто.
![]() Сделаю скоро. P. S. Главную диагональ нет смысла обрабатывать. Думается мне, что матрицу в топку. Какие данные в твою прогу я не вводил - одно безобразие. )))) Хотя оно и понятно. Вот тебе три матрицы. Тестируй прогу. ![]() ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
хм... создаётся впечатление, что моё предложение все просто пропустили
![]() может, конечно, я ошибаюсь, но после представления задачи в виде системы линейных уравнений, она становится тривиальной... -------------------- qqq |
|||
|
||||
AlexST |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 30.4.2006 Где: Москва Репутация: 2 Всего: 3 |
![]() Это сообщение отредактировал(а) AlexST - 23.11.2006, 16:00 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |