Мой код должен go по всем индексам матрицы. И посчитайте, сколько существует разделов числа 1. Например: введите здесь описание изображения
public static int count(int mat[][])
{
return count(mat,0,0,0);
}
public static int count(int mat[][],int row, int col,int sum)
{
if(row < 0 || row >= mat.length || col < 0 || col >= mat[row].length)
{
return sum;
}
if(mat[row][col] == 1)
{
mat[row][col] = -1;
sum++;
delit(mat,row,col,0);
}
col++;
if(col >= mat[row].length)
{
row +=1;
col = 0;
}
count(mat,row,col,sum);
return sum;
}
public static int delit(int mat[][],int row, int col, int flag)
{
if(row < 0 || row >= mat.length || col < 0 || col >= mat[row].length)
{
return 1;
}
if((mat[row][col] == 0 || mat[row][col] == -1) && flag == 1)
{
return 1;
}
flag = 1;
if( mat[row][col] == 1)
{
mat[row][col] = -1;
}
delit(mat,row+1,col,1);
delit(mat,row-1,col,1);
delit(mat,row,col+1,1);
delit(mat,row,col-1,1);
return 1;
}
Судя по моему отпечатку, он действительно меняет все 1-е числа, но на выходе получается 1, а не 3, как должно быть.
это выход
0 0 0 0 1
0 1 1 1 0
0 0 1 1 0
1 0 0 0 0
1 1 0 0 0
число 0
0 0 0 0 -1
0 -1 -1 -1 0
0 0 -1 -1 0
-1 0 0 0 0
-1 -1 0 0 0