#include <iostream>
#include <random>
using namespace std;
bool inMatrix(int x, int y, int rows, int cols)
{
if (x < rows&&x >= 0 && y >= 0 && y <= cols)
return true;
else
return false;
}
void printMatrix(int* matrix, int row, int col)
{
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
cout << matrix[i*col + j] << " ";
}
cout << endl;
}
cout << endl;
}
void findN4(int* a, int rows, int cols, int x, int y, int& cnt)
{
printMatrix(a, rows, cols);
if (*(a + x*cols + y) == 1)
{
*(a + x*cols + y) = cnt;
if (inMatrix(x - 1, y, rows, cols))
findN4(a, rows, cols, x - 1,y , cnt);
if (inMatrix(x + 1, y, rows, cols))
findN4(a, rows, cols,x+1,y ,cnt);
if (inMatrix(x , y-1, rows, cols))
findN4(a, rows, cols, x, y-1, cnt);
if(inMatrix(x, y+1, rows, cols))
findN4(a, rows, cols, x, y + 1, cnt);
}
}
int main(){
int row = 4, col = 15;
int* matrix = new int[row*col];
for (int i = 0; i < col*row; i++)
matrix[i] = rand()%2;
printMatrix(matrix, row, col);
int cnt = 2;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (matrix[i*col + j] == 1)
{
findN4(matrix, row, col, i, j, cnt);
cnt++;
}
}
}
cout << cnt-2;
}