DFS hdu1241
DFS这个东西会的我感觉没什么东西,就一直搜就是了。
然后觉得百度讲的挺好的,放过来看看。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<memory.h>
using namespace std;
char maps[105][105];
char visit[105][105];
int dir[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};
int m,n,ans;
void dfs (int x,int y)
{
int x1,y1,i;
visit[x][y]='0';
for(i=0;i<8;i++)
{
x1=x+dir[i][0];
y1=y+dir[i][1];
if(maps[x1][y1]=='@'&&visit[x1][y1]=='1'&&x1>=0&&y1>=0&&x1<m&&y1<n)
dfs(x1,y1);
}
}
int main( )
{
int i,j,ans;
while(cin>>m)
{
memset(visit,'1',sizeof(visit));
ans=0;
if(m==0)
break;
cin>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>maps[i][j];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(maps[i][j]=='@'&&visit[i][j]=='1')
{
ans++;
dfs(i,j);
}
}
/*cout<<endl;
cout<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout<<visit[i][j];
cout<<endl;
}*/
cout <<ans<<endl;
}
return 0;
}