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.

66 lines
1.3 KiB

2 years ago
//<2F><><EFBFBD><EFBFBD><EFBFBD>㷨114~116ҳ<36><D2B3><EFBFBD><EFBFBD>
/*ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ͼ<EFBFBD>ϵĶ<CFB5><C4B6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>*/
#include <stdio.h>
int a[51][51];
int book[51][51],n,m,sum;
void dfs(int x,int y,int color) {
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><D2A1><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD>˳ʱ<CBB3>
int next[4][2]= {{0,1}, {1,0},{0,-1},{-1,0}};
int k,tx,ty;
a[x][y]=color;//<2F><>a[x][y]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ
//<2F>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>α<EFBFBD><CEB1><EFBFBD>
for(k=0; k<4; k++) {
tx=x+next[k][0];//Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
ty=y+next[k][1];
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Խ<EFBFBD><D4BD>
if(tx<1||tx>n||ty<1||ty>m)
continue;
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ½<CEAA>ؼ<EFBFBD><D8BC>Ƿ񱻱<C7B7><F1B1BBB1><EFBFBD>
if(a[tx][ty]>0 && book[tx][ty]==0) {
sum++;
book[tx][ty]==1;
//<2F><><EFBFBD>Ǹõ<C7B8><C3B5><EFBFBD><EFBFBD>߹<EFBFBD>
dfs(tx,ty,color); //<2F>Ըõ<D4B8><C3B5><EFBFBD>ɫ <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>dfs()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
}
}
return;
}
int main() {
int i,j,num=0;
scanf("%d %d %d",&n,&m);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> n m
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
scanf("%d",&a[i][j]);
}
}
//<2F><>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>ĵ㳢<C4B5>Խ<EFBFBD><D4BD><EFBFBD>dfsȾɫ
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
if(a[i][j]>0) {
num--; //<2F><><EFBFBD><EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD>ĵ<EFBFBD>ͼ for(i=1;i<=n;i++)
book[i][j] = 1;
dfs(i,j,num);
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>Ⱦɫ<C8BE><C9AB><EFBFBD>ĵ<EFBFBD>ͼ
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
printf("%3d",a[i][j]);//3<><33>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>еij<D0B5><C4B3><EFBFBD>
}
printf("\n");
}
//<2F><><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
printf("<EFBFBD><EFBFBD>%d<><64>С<EFBFBD><D0A1>\n",-num);
getchar();
getchar();
return 0;
}