标签:poj1562 poj 1562 oil deposits
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 14391 | Accepted: 7823 |
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
Source
一道简单的深搜。只要认识这个单词就行adjacent,邻近的。也就是说油田的八个方向都是邻近的,而不是上下左右四个方向。小心这里就行了、#include <stdio.h>
#include <string.h>
char map[105][105];
int n,m,dir[8][2]={0,1,0,-1,1,0,-1,0,-1,-1,1,1,1,-1,-1,1};//dir保存八个方向
bool limit(int x,int y)//判断是否出边界
{
if(x>=0&&y>=0&&x<m&&y<n&&map[x][y]=='*')
return false;
else
return true;
}
void dfs(int x,int y)
{
for(int i=0;i<8;i++)
{
int xx=x+dir[i][0];
int yy=y+dir[i][1];
if(map[xx][yy]=='@'&&limit(xx,yy))
{
map[xx][yy]='*';//遇到油田设置为*,避免下次遍历、
dfs(xx,yy);
}
}
}
int main()
{
while(scanf("%d %d",&m,&n)!=EOF)
{
if(m==0&&n==0)
break;
memset(map,0,sizeof(map));
for(int i=0;i<m;i++)
scanf("%s",map[i]);
int count=0;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(map[i][j]=='@')
{
count++;//计数
dfs(i,j);
}
}
printf("%d\n",count);
}
return 0;
}版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:poj1562 poj 1562 oil deposits
原文地址:http://blog.csdn.net/su20145104009/article/details/46942963