标签:
解题思路:第一道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