Lake Counting (DFS)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lake Counting (DFS)相关的知识,希望对你有一定的参考价值。

N*M的园子,雨后积起了水.八连通的积水背认为是连接在一起的.请求出园子里总共有多少水洼?

 

dfs(Depth-First  Search)  八个方向的简单搜索....

深度优先搜索从最开始的状态出发,遍历所有可以到达的状态.由此可以对所有的状态进行操作,或者列举出所有的状态.

 

 

 1 int N,M;
 2 char field[50][50];
 3 
 4 void dfs(int x,int y)
 5 {
 6     field[x][y]==.;  //将现在所在位置替换
 7     for(int dx=-1; dx<=1; dx++){
 8         for(int dy=-1; dy<=1; dy++){    //向x方向移动dx,向y方向移动dy,移动的结果为(nx,ny)
 9             int nx=x+dx;
10             int ny=y+dy;
11             if(0<=nx && nx<N && 0<ny && ny<M && field[nx][ny]==W)  //判断(nx,ny)是不是在园子内,以及是否有积水
12                 dfs(nx,ny);
13         }
14     }
15 }
16 
17 void solve(){
18     int ans=0;
19     for(int i=0; i<N; i++){
20         for(int j=0; j<M; j++){
21             if(field[i][j]==W){   //从有W的地方开始dfs
22                 dfs(i,j);
23                 ans++;
24             }
25         }
26     }
27     printf("%d\n",ans);
28 }

 

以上是关于Lake Counting (DFS)的主要内容,如果未能解决你的问题,请参考以下文章

poj 2386 Lake Counting(dfs)

POJ 2386 Lake Counting dfs

DFS----Lake Counting (poj 2386)

POJ 2386 Lake Counting DFS

POJ 2386 Lake Counting(DFS)

dfs基础介绍以及 Lake counting