标签:
解题思路:第一道DFS的题目---
参看了紫书和网上的题解--
在找到一块油田@的时候,往它的八个方向找,直到在能找到的范围内没有油田结束这次搜索 可以模拟一次DFS,比如说样例 在i=0,j=1时,发现第一块油田,对它DFS,这样经过一次DFS,所有的油田都被找出来了,被记0

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14384 Accepted Submission(s): 8287
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char map[1000][1000];
int n,m;
void dfs(int i,int j)
{
if(map[i][j]!=‘@‘||i<0||i>=m||j<0||j>=n)
return;
else //往八个方向搜索
{
map[i][j]=‘0‘;
dfs(i-1,j-1);
dfs(i-1,j);
dfs(i-1,j+1);
dfs(i,j-1);
dfs(i,j+1);
dfs(i+1,j-1);
dfs(i+1,j);
dfs(i+1,j+1);
}
}
int main()
{
int i,j;
while(scanf("%d %d",&m,&n)!=EOF&&n&&m)
{
memset(map,0,sizeof(map));
int ans=0;
for(i=0;i<m;i++)
scanf("%s",map[i]);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
if(map[i][j]==‘@‘)
{
dfs(i,j);
ans++;
}
}
printf("%d\n",ans);
}
}
标签:
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4264173.html