Может так:
Код:
int iSpots = 0
for (int i = 0; i < M; i++)
{
for(int j = 0; j < N; j++)
{
if ( matrix[i][j] == 1 )
{
FillSpot(matrix,i,j)
iSpots++;
}
}
void FillSpot(int* matrix,int i,int j)
{
if (i>= M || j>= N || matix[j*M+i] == 0)
return;
matix[i][j] = 2;
FillSpot(matrix,i+1,j);
FillSpot(matrix,i-1,j);
FillSpot(matrix,i,j-1);
FillSpot(matrix,i,j+1);
}