《挑戰程序設計》-找水窪 題解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 }