《挑战程序设计》-找水洼 题解ios
2019-12-01ide
Powered by WSY spa
1.题目传送门:http://poj.org/problem?id=2386.net
2.题目思路:这道题实际上是一个很是简单的搜索,咱们只须要对于每个点,向他的8个方向搜索就能够了。设计
3.代码:最后给你们粘一个福利(AC代码来源于:https://blog.csdn.net/qq_33929112/article/details/52627070)
code
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 }