'commit'
This commit is contained in:
65
C++课程/待整理知识/啊哈算法/dfs独立小岛.cpp
Normal file
65
C++课程/待整理知识/啊哈算法/dfs独立小岛.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
//<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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user