dfs
#include "stdio.h"
#include<stdlib.h>
char a[100][100];
int m,n,flag;
void dfs(int x,int y)
{
if(x<0||x>=m||y<0||y>=n) return ;
a[x][y]='E';
if(a[x][y+1]=='W') dfs(x,y+1);
else if(a[x+1][y+1]=='W') dfs(x+1,y+1);
else if(a[x-1][y+1]=='W') dfs(x-1,y+1);
else if(a[x][y-1]=='W') dfs(x,y-1);
else if(a[x+1][y-1]=='W') dfs(x+1,y-1);
else if(a[x-1][y-1]=='W') dfs(x-1,y-1);
else if(a[x+1][y]=='W') dfs(x+1,y);
else if(a[x-1][y]=='W') dfs(x-1,y);
else flag++;
}
int main()
{
int i,j;
while(~scanf("%d%d",&m,&n))
{
flag=0;
int x,y;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%1s",&a[i][j]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i][j]=='W') {x=i;y=j;dfs(x,y);}
//printf("%d %d\n",x,y);
printf("%d\n",flag);
}
return 0;
}
#include<stdlib.h>
char a[100][100];
int m,n,flag;
void dfs(int x,int y)
{
if(x<0||x>=m||y<0||y>=n) return ;
a[x][y]='E';
if(a[x][y+1]=='W') dfs(x,y+1);
else if(a[x+1][y+1]=='W') dfs(x+1,y+1);
else if(a[x-1][y+1]=='W') dfs(x-1,y+1);
else if(a[x][y-1]=='W') dfs(x,y-1);
else if(a[x+1][y-1]=='W') dfs(x+1,y-1);
else if(a[x-1][y-1]=='W') dfs(x-1,y-1);
else if(a[x+1][y]=='W') dfs(x+1,y);
else if(a[x-1][y]=='W') dfs(x-1,y);
else flag++;
}
int main()
{
int i,j;
while(~scanf("%d%d",&m,&n))
{
flag=0;
int x,y;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%1s",&a[i][j]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i][j]=='W') {x=i;y=j;dfs(x,y);}
//printf("%d %d\n",x,y);
printf("%d\n",flag);
}
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.