![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
Собственно вопрос- как решать задачи подобного типа?
Цитата:
Есть ли более экономичные/правильные варианты решения? |
|
![]() |
![]() |
![]() |
#2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Берем исходную клетку и ставим туда 0.
Потом во все доступные с одного хода клетки ставим 1. Дальше для каждой из этих клеток смотрим все доступные и ставим туда 2 (если еще ничего не стоит). И так пока все не заполним. В итоге имеем матрицу, в каждой ячейке которой стоит число - минимальное количество ходов, за которое к ней можно добраться. Потом берем конечную клетку и от нее идем к начальной. Ну или еще во время заполнения смотреть, не попали ли в конечную клетку. Как-то так. Называется, вроде, волновой алгоритм.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#3 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
Блин, точно!
Протупил...) Еще 400 примеров решу и займусь информой. Sazary, спасибо! // Кстати, тогда уже можно использовать "двойной" волновой алгоритм, т.е. "трассировать" путь из двух точек одновременно. ///Блин, я тупой, как не мог додуматься раньше... Последний раз редактировалось Levsha100; 12.09.2009 в 19:53. |
![]() |
![]() |
![]() |
#4 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]() ![]() Цитата:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
![]() |
![]() |
![]() |
#5 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
Эммм... над этим нужно подумать....
![]() Я просто провел аналогию с волновым алгоритмом, тут, наверное, немного другое. Суть в том, что эффективность возрастает в несколько раз при "параллельном" поиске. Опять, наверное, протупил ![]() //Что то типа breadth-first vs bidirectional... Последний раз редактировалось Levsha100; 12.09.2009 в 20:14. |
![]() |
![]() |
![]() |
#6 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
Вообще, этот самый параллельный поиск будет эффективен только если будет осуществляться одновременно. То есть, придется смотреть в сторону многопоточности. Тогда обход от начала может ставить в ячейки положительные значения, а обход от конца - отрицательные. При встрече суммируем по модулю. Ну там еще подумать надо.
В общем, по-моему проще сделать по-обычному ))
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#7 | |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]() Цитата:
Хотя да легче сделать более простым способом. |
|
![]() |
![]() |
![]() |
#8 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
А что за красная линия? И почему 3 окружности? )
Имел в виду, что если поиск будет выполняться последовательно, пусть даже попеременно из одной точки и из другой, то по скорости это все равно будет также, как и обычный поиск. Вот ) А картинка напоминает какую-то абстрактную композицию ![]()
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#9 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]()
Объясняю свой рисунок
![]() Линия это разделитель, верху Ваш вариант, внизу- мой. Красные точки- начало и финиш(или наоборот, значения не имеет) Окружности ограничивают пройденные клетки массива. В Вашем варианте одна окружность, потому что Вы ищете последвательно от начала до конца. А в моем мы "проходим" клетки "одновременно". Получается что при одинаковом количестве "ходов" мои окружности ближе друг к другу чем Ваша к финишной точке. Воть. Надеюсь Вы хоть что то поняли, ибо я слишком сумбурно объяснил... ![]() |
![]() |
![]() |
![]() |
#10 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
В принципе, понял. И мнение не изменилось - в однопоточной программе выигрыша не будет. Да и потом не совсем ясно, как вы это будете реализовывать )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ход конем | Etlau | Помощь студентам | 3 | 28.05.2010 19:16 |
Математические методы решения | Golovastik | Общие вопросы C/C++ | 0 | 23.06.2009 17:28 |
помогите придумать ход решения | Petruha-nsk | Общие вопросы C/C++ | 6 | 13.04.2009 18:31 |
Задача "Ход конем" | WormsSs | Общие вопросы C/C++ | 14 | 29.11.2008 16:25 |
Требуются решения 2х задач. | anna | Помощь студентам | 8 | 10.04.2007 20:01 |