You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.6 KiB

2 years ago
#include<iostream>
using namespace std;
int main() {
struct mark {
int x;
int y;
};
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct mark que[2501];
int square=1;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int head,tail;
int n,m;
int p,q,k;
int book[51][51];
//ʹ<><CAB9>book<6F><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񾭹<C7B7><F1BEADB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int a[51][51];
int color=0;
//<2F><>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD><EFBFBD>ͳ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
head=1;
tail=1;
cout << "please input the map of row and col: ";
cin >> n >>m;
cout << "please input the map: "<<endl;
for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) cin >> a[i][j];
for(p=1; p<=n; ++p) {
for(q=1; q<=m; ++q) {
if(a[p][q]>0)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD>
{
color--;
book[p][q]=1;
que[tail].x=p;
que[tail].y=q;
++tail;
while(head<tail)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
{
int next[4][2]= {{1,0},
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬ʵ<E9A3AC>ֶ<EFBFBD><D6B6>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6> {0,1}, {0,-1}, {-1,0}};
a[p][q]=color;
for(k=0; k<4; ++k) {
int tx=que[head].x+next[k][0];
int ty=que[head].y+next[k][1];
if((tx < 0) || (ty < 0) || (tx > n) || (ty > m))
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Խ<EFBFBD><D4BD>
continue;
if((a[tx][ty]>0) && (book[tx][ty] == 0))
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ½<CEAA>ء<EFBFBD><D8A1>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ǹ<EFBFBD>
{
book[tx][ty]=1;
++square;
a[tx][ty]=color;
que[tail].x=tx;
que[tail].y=ty;
++tail;
}
} ++head;
//<2F><>һ<EFBFBD><D2BB><EFBFBD>ܹؼ<DCB9><D8BC><EFBFBD>ÿһ<C3BF><D2BB><EFBFBD><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>Ϻ󣬸õ<F3A3ACB8><C3B5><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>
}
}
}
}
for(int i=1; i<=n; ++i) {
for(int j=1; j<=m; ++j) {
cout << a[i][j] <<" ";
}
cout << endl;
}
cout << "the island of the square : " << square <<endl;
return 0;
}