POJ2386 Lake Counting(DFS,八连通块)
2017-09-02 21:09
211 查看
POJ2386
题意分析:
八连通块题,从任意的W开始,不停的把邻接的部分用’.’代替。1次DFS后与初始的这个W相连的所有W就都被替代成了’.’。因此直到格子里面没有W为止。总共进行的DFS就是连通块的个数。
相似的题目,HDOJ1241同样是一道八连通块问题。
题意分析:
八连通块题,从任意的W开始,不停的把邻接的部分用’.’代替。1次DFS后与初始的这个W相连的所有W就都被替代成了’.’。因此直到格子里面没有W为止。总共进行的DFS就是连通块的个数。
相似的题目,HDOJ1241同样是一道八连通块问题。
#include<iostream> #include<string.h> #include<cstring> using namespace std; #define maxn 1010 int i,j,n,m; char mp[maxn][maxn]; void dfs(int x,int y){ //将现在的位置替换为'.' mp[x][y]='.'; //循环遍历移动8个方向 int dx,dy; for(dx=-1;dx<=1;dx++){ for(dy=-1;dy<=1;dy++){ int nx=x+dx,ny=y+dy; if(0<=nx &&nx<n &&0<=ny&&ny<m&& mp[nx][ny]=='W') dfs(nx,ny); } } //return; } int main(){ while(scanf("%d%d",&n,&m)&&n){ for(i=0;i<n;i++) scanf("%s",mp[i]); int cnt=0; for(i=0;i<n;i++){ for(j=0;j<m;j++){ //从有W的地方开始dfs if(mp[i][j]=='W'){ dfs(i,j); cnt++; } } } cout<<cnt<<endl; } return 0; }
相关文章推荐
- poj2386 Lake Counting【DFS】
- POJ2386 Lake Counting【DFS】
- POJ2386:Lake Counting(dfs)
- poj2386 Lake Counting(简单DFS)
- poj2386 Lake Counting(简单DFS)
- POJ2386 Lake Counting 【DFS】
- POJ2386 Lake Counting (dfs)
- POJ2386 Lake Counting简单dfs
- POJ2386:Lake Counting(DFS)
- POJ2386 Lake Counting(dfs)
- POJ2386 Lake Counting (DFS)
- Lake Counting(DFS)
- DFS------Lake Counting
- DFS 之 poj 2386 Lake Counting
- POJ2386 Lake Counting 图的遍历
- poj2386 Lake Counting (深搜)
- poj2386----简单dfs,a一送一
- POJ-2386 Lake Counting(dfs)(白书2.1.4)
- DFS模板题---Lake Counting
- 【首先膜拜大湿】poj-2386-Lake Counting-DFS模板题