Что мне нужно сделать здесь, так это подсчитать количество смежных белых блоков (в 2-х) на квадратной доске, которая состоит из случайных черных (0-х) и белых (1-х) блоков.Белые блоки должны быть на i+1,j
||i-1,j
||i,j+1
||i,j-1
.Технически диагонали не учитываются.Я привел пример ниже:
[1 0 1]
[1 1 0]
[0 1 0]
Здесь count == 3
(0,0)(1,0) and (1,0)(1,1) and (1,1)(2,1)
Вот мой код:
public int count = 0;
boolean count(int x, int y, int[][] mat)
{
if(x<0 || y<0)
return false;
if(mat[x][y] == 0)
return false;
for(int i = x; i<mat.length; i++)
{
for(int j = y; j<mat[0].length; j++)
{
if(mat[i][j] == 1)
{
mat[i][j] = 0;
if(count(i-1,j,mat))
count++;
if(count(i,j-1,mat))
count++;
if(count(i+1,j,mat))
count++;
if(count(i,j+1,mat))
count++;
}
}
}
return true;
}
Краткое объяснение того, что я пытаюсьделать здесь: я собираюсь найти 1 на доске, и когда я нахожу один, я изменяю его на 0 и проверяю его вверх, вниз, влево, вправо на 1. Это продолжается до тех пор, пока я не найду соседние 1.Что мне здесь не хватает?Я как бы чувствую, что зацикливаюсь излишне.