Показать сообщение отдельно
  #8  
Старый 30.07.2015, 00:23
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Я думал - ничего толком не придумал. Либо выходит кривой и медленный обход в ширину, либо рекурсия и обход в глубину. Фактически это поиск компонент связности графа, и та же вика предлагает обычный поиск в ширину и глубину.

Касаемо самой проверки, можно как и сказано в "решении" - добавить лишние столбцы и ячейки с нулями, тогда ифы можно вообще выпилить. Получится просто 4 вызова делета. Можно в цикл свернуть по 2:
Код:
for (int i = -1; i < 2; i += 2)
{
    deleteIsland(map,x+i,y);
    deleteIsland(map,x,y+i)
}
но как-то это тупо.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием