'commit'
This commit is contained in:
61
C++课程/待整理知识/啊哈算法/dfs宝岛探险.cpp
Normal file
61
C++课程/待整理知识/啊哈算法/dfs宝岛探险.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
/*<2A><>ɫ<EFBFBD><C9AB>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>color<6F>IJ<EFBFBD><C4B2><EFBFBD>*/
|
||||
#include<stdio.h>
|
||||
|
||||
int a[51][51];
|
||||
int book[51][51];
|
||||
int n, m, sum;
|
||||
void dfs(int x, int y, int color) {
|
||||
int k, tx, ty;
|
||||
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int next[4][2] = { { 0, 1 },//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{ 1, 0 },//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{ 0, -1 },//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{ -1, 0 }
|
||||
};//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
a[x][y] = color;//<2F><>a[x][y]<5D><><EFBFBD><EFBFBD>Ⱦɫ
|
||||
|
||||
//ö<><C3B6><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (k = 0; k<4; k++) {
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
tx = x + next[k][0];
|
||||
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><C7B7><EFBFBD>½<EFBFBD><C2BD>
|
||||
if (a[tx][ty]>0 && book[tx][ty] == 0) {
|
||||
sum++;
|
||||
book[tx][ty] = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>߹<EFBFBD>
|
||||
dfs(tx, ty, color);//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
int main() {
|
||||
int i, j, startx, starty;
|
||||
scanf("%d %d %d %d", &n, &m, &startx, &starty);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
||||
for (i = 1; i <= n; i++)
|
||||
for (j = 1; j <= m; j++)
|
||||
scanf("%d", &a[i][j]); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
||||
|
||||
book[startx][starty] = 1;
|
||||
sum = 1;
|
||||
dfs(startx, starty, -1);//<2F><>-1<><31>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦɫ
|
||||
|
||||
//<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]);//%3d<33>е<EFBFBD>3<EFBFBD><33>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>еij<D0B5><C4B3><EFBFBD>
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
getchar();
|
||||
getchar();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user