首页 > 其他 > 详细

UVA 572

时间:2015-01-12 20:43:42      阅读:276      评论:0      收藏:0      [点我收藏+]

这是一道纯正的深度优先搜索题目。

题目要求在有多少个不同的块,而不同块的定义则是,一个块中的任意一点和l另一个块中的任意一点不会相连,而相连的定义则是

在横向、纵向和对角线上相连。

#include<stdio.h>
#include<string.h>
char map[101][101];
int m,n;
int search(int x,int y)
{
if(x<0||y<0||x>m||y>n)
return 0;
if(map[x][y]==‘@‘)
{
map[x][y]=‘1‘;
search(x,y+1);
search(x+1,y+1);
search(x+1,y);
search(x+1,y-1);
search(x,y-1);
search(x-1,y-1);
search(x-1,y);
search(x-1,y+1);
return 1;
}
if(map[x][y]==‘*‘)
{
map[x][y]=‘1‘;
return 0;
}
if(map[x][y]==‘1‘)
return 0;
}
int main()
{

while(scanf("%d%d",&m,&n)!=EOF)
{
getchar();
if(m==0||n==0)
break;
memset(map,‘\0‘,sizeof(map));
int i,j,ans=0,t;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
scanf("%c",&map[i][j]);
}
getchar();
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(map[i][j]==‘*‘||map[i][j]==‘1‘)
continue;
t=search(i,j);
if(t!=0)
ans++;
}
printf("%d\n",ans);
}
return 0;
}

UVA 572

原文:http://www.cnblogs.com/hbutACMER/p/4219015.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!