您的位置:首页 > 其它

poj2386水洼dfs

2015-08-06 21:17 267 查看
#include<stdio.h>

char a[102][102];

int d[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1}; //d数组表示方位

int n,m;

void dfs(int x,int y)

{

if(a[x][y]=='.' || x<0 || x>=n || y<0 || y>=m) return ;

for(int i=0;i<8;++i)

{

a[x][y]='.'; //把W变成点

dfs(x+d[i][0],y+d[i][1]); //递归调用

}

}

void dfs(int x,int y) //最原始的

{

if(a[x][y]=='.' || x<0 || x>=n || y<0 || y>=m) return ;

a[x][y]='.';

dfs(x-1,y-1);

dfs(x-1,y);

dfs(x-1,y+1);

dfs(x,y-1);

dfs(x,y+1);

dfs(x+1,y-1);

dfs(x+1,y);

dfs(x+1,y+1);

}

int main()

{

int i,j;

int ans=0;

scanf("%d%d",&n,&m);

getchar();

for(i=0;i<n;++i)

scanf("%s",a[i]);

for(i=0;i<n;++i) //遍历

{

for(j=0;j<m;++j)

{

if(a[i][j]=='W')

{

ans++;

dfs(i,j);

}

}

}

printf("%d",ans);

return 0;

}

/* //测试数据

10 12

W........WW.

.WWW.....WWW

....WW...WW.

.........WW.

.........W..

..W......W..

.W.W.....WW.

W.W.W.....W.

.W.W......W.

..W.......W.

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: