![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2008
Сообщений: 76
|
Народ, помогите найти алгоритм следующего:
Есть 2 зоны (условно) Поле 50X50 клеток (неважно). Перерезав между ними связь, зона (без красного квадрата) перекрашивается в черный цвет. Как тут можно сделать? У меня идея с рекурсиями, но может как-то и без них можно обойтись? Прикладываю для наглядности скрины. Заранее всем благодарен. |
|
|||||
|
ну что то вроде
i= 12 j= 15начальные координты точки под черной точки
While (scene_array[i+1][j] = 1) ||
(scene_array[i-1][j] = 1) ||
(scene_array[i][j+1] = 1) ||
(scene_array[i][j-1] = 1)
DO {
if ( scene_array[i+1][j] == 1) {
scene_array[i+1][j] == 2
i++
While (scene_array[i+1][j] = 1) ||
(scene_array[i-1][j] = 1) ||
(scene_array[i][j+1] = 1) ||
(scene_array[i][j-1] = 1) DO ......................
}
if ( scene_array[i-1][j] == 1) {
scene_array[i-1][j] == 2
i--
While (scene_array[i+1][j] = 1) ||
(scene_array[i-1][j] = 1) ||
(scene_array[i][j+1] = 1) ||
(scene_array[i][j-1] = 1) DO ......................
}
это в две стороны... тоже самое для другин сторон.
}
Последний раз редактировалось Avrilka; 01.07.2010 в 00:34. |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 76
|
Спасибо, но это только при этом условии, скорее всего это не то... Но огромное спасибо за вариант
![]() Вот такая ситуация Последний раз редактировалось max123456789; 01.07.2010 в 02:04. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Подойдёт волновой алгоритм поиска пути, только без самого поиска пути. Распространять волну, пока не заполнит всю доступную карту, потом смотреть - если она не попала в нужную зону, то красить эту зону нужным цветом.
|
|
|||||
|
Регистрация: Jun 2008
Сообщений: 76
|
А поподробнее?
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
А поподробнее - google "волновой алгоритм". Если вы понимаете, как он работает, то подробности вам не понадобятся, а если ещё нет, то есть сотни статей на эту тему.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|