#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; }