《挑战程序设计》-找水洼 题解

《挑战程序设计》-找水洼 题解

2019-12-01

Powered by WSY

1.题目传送门:http://poj.org/problem?id=2386

2.题目思路:这道题其实是一个非常简单的搜索,我们只需要对于每一个点,向他的8个方向搜索就可以了。

3.代码:最后给大家粘一个福利(AC代码来源于:https://blog.csdn.net/qq_33929112/article/details/52627070)

 1 #include <iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 #define maxn 105
 5 char field[maxn][maxn];
 6 int n,m;
 7 void dfs(int x,int y)
 8 {
 9 field[x][y]='.';
10 //循环遍历八个方向
11 for(int dx=-1;dx<=1;dx++){
12 for(int dy=-1;dy<=1;dy++){
13 int nx=x+dx,ny=y+dy;
14 //判断(nx,ny)是否在园子里,以及是否有积水
15 if(0<=nx&&nx<n&&0<=ny&&ny<m&&field[nx][ny]=='W'){
16 dfs(nx,ny);
17 }
18 }
19 }
20 }
21 void solve()
22 {
23 int res=0;
24 for(int i=0;i<n;i++){
25 for(int j=0;j<m;j++){
26 if(field[i][j]=='W'){
27 //从有积水的地方开始深搜
28 dfs(i,j);
29 res++;
30 }
31 }
32 }
33 printf("%d\n",res);
34 }
35 int main()
36 {
37 scanf("%d%d",&n,&m);
38 for(int i=0;i<n;i++){
39 for(int j=0;j<m;j++){
40 cin>>field[i][j];
41 }
42 }
43 solve();
44 return 0;
45 }
View Code

猜你喜欢

转载自www.cnblogs.com/Moyra/p/11965070.html