您的位置:首页 > 其它

HDU 搜索 1241

2016-07-15 14:39 246 查看
#include"iostream"
#include"cstdio"
#include"cstdlib"
#include"cstring"

using namespace std;

char map[105][105];
int n,m;
int sum=0;
bool book[105][105];
int nextk[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};

void dfs(int i,int j)
{
for(int a=0;a<8;a++)
{
int dx=i+nextk[a][0];
int dy=j+nextk[a][1];
if(dx<1||dx>n||dy<1||dy>m||book[dx][dy]==1||map[dx][dy]=='*') continue;
else
{
book[dx][dy]=1;
dfs(dx,dy);
}
}
}

int main()
{
while(scanf("%d%d",&n,&m)==2&&n!=0&&m!=0)
{
sum=0;
memset(book,0,sizeof(book));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>map[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(book[i][j]==0&&map[i][j]=='@')
{
book[i][j]=1;
sum++;
dfs(i,j);
}
}
}
cout<<sum<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: