30.07.2015, 00:09
|
|
Профессионал
|
|
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
|
|
То же самое, только на си, чуть правильней (диагонали не должны учитываться по заданию) и с немного меньшим числом проверок во время выполнения, хотя выглядит корявее:
Код:
void deleteIsland(char **map, int x, y)
{
if (map[y][x] == 0)
return;
map[y][x] = 0;
if (y > 0)
deleteIsland(map, x, y-1);
if (y < n-1)
deleteIsland(map, x, y+1);
if (x > 0)
deleteIsland(map, x-1, y);
if (x < n-1)
deleteIsland(map, x+1, y);
}
int islandsCount(char **map, int N)
{
int result = 0;
for (int y = 0; y < N; ++y)
for (int x = 0; x < N; ++x)
if (map[y][x] != 0)
{
++result;
deleteIsland(map, x, y);
}
return result;
}
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
|