Lak3 Counting(POJ No.2386)

阅读: 评论:0

Lak3 Counting(POJ No.2386)

Lak3 Counting(POJ No.2386)

问题描述:

有个大小为N*M的园子,雨后积起了水。八连通的积水被认为是连接在一起的。求出园子里总共有多少水洼。

N, M <= 100

输入例:

问题分析:

八连通即:上、左上、左,左下,下,右下,右,右上。

这道题可以用深入优先搜索(DFS)的思想。

  1. 寻找是水洼的点。如果找到,标记此点已经记过。

    循环此点的八连通,如果是水,递归循环

  2. 寻找的次数即为水洼数。

代码:

# include <iostream>
# include <fstream>using namespace std;int N, M;
char map[100][100];void DFS_Search(int i, int j)
{map[i][j] = '.';//这样搞定八循环的方式非常棒!!!for ( int dx = -1; dx <= 1; dx++){for ( int dy = -1; dy <= 1; dy++){int x = i + dx;int y = j + dy;if ( x >= 0 && x <= N && y >= 0 && y <= M && map[x][y] == 'W')DFS_Search(x, y);}}
}int main()
{int count = 0;
//    ifstream cin("Lake_");cin>>N>>M;for( int i = 0; i < N; i++){for ( int j = 0; j < M; j++){cin>>map[i][j];}}for( int i = 0; i < N; i++){for ( int j = 0; j < M; j++){if ( map[i][j] == 'W' ){count++;DFS_Search(i, j);}}}cout<<count<<endl;return 0;
}

转载于:.html

本文发布于:2024-01-27 23:45:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063703563369.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Counting   POJ
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23