#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
void fun(int (*a)[5],int i,int j,int m)
{
if(i<0||j<0||i>=m||j>=m||a[i][j]!=1) return;
a[i][j]=2;
fun(a,i-1,j,m);
fun(a,i+1,j,m);
fun(a,i,j-1,m);
fun(a,i,j+1,m);
}
typedef struct Point{
int x;
int y;
}Point;
typedef struct Data{
Point a[100];
int length;
}Data;
void EnQueue(Data& data,int i,int j,int (*array)[5],int m)
{
if(i<0||j<0||i>=m||j>=m||array[i][j]!=1) return;
Point temp;
temp.x=i;
temp.y=j;
data.a[data.length]=temp;
data.length++;
array[i][j]=0;
}
Point DeQueue(Data& data)
{
Point temp;
temp=data.a[0];
for (int i=0;i<data.length-1;i++)
{
data.a[i]=data.a[i+1];
}
data.length--;
return temp;
}
void deep(int (*array)[5],int i,int j,int m)
{
Data data;
data.length=0;
EnQueue(data,i,j,array,m);
while (data.length)
{
Point temp=DeQueue(data);
EnQueue(data,temp.x-1,temp.y,array,m);
EnQueue(data,temp.x+1,temp.y,array,m);
EnQueue(data,temp.x,temp.y-1,array,m);
EnQueue(data,temp.x,temp.y+1,array,m);
}
}
void main()
{
srand((unsigned)time(NULL));
int map[5][5];
for (int i=0;i<5;i++)
{
for (int j=0;j<5;j++)
{
map[i][j]=rand()%2;
cout<<map[i][j]<<" ";
}
cout<<endl;
}
int many=0;
/*for (i=0;i<10;i++)
{
for (int j=0;j<10;j++)
{
if(map[i][j]==1)
{
fun(map,i,j,10);many++;
cout<<endl;
for (int ii=0;ii<10;ii++)
{
for (int jj=0;jj<10;jj++)
{
cout<<map[ii][jj]<<" ";
}
cout<<endl;
}
}
}
}*/
for (i=0;i<5;i++)
{
for (int j=0;j<5;j++)
{
if(map[i][j]==1)
{
deep(map,i,j,5);many++;
cout<<endl;
for (int ii=0;ii<5;ii++)
{
for (int jj=0;jj<5;jj++)
{
cout<<map[ii][jj]<<" ";
}
cout<<endl;
}
}
}
}
cout<<many<<endl;
}