POJ 2386--Lake Counting
2017-06-10 21:24
232 查看
2017-10-02
原题链接
题目大意为,给出一个M*N(1<=M,N<=100)的矩阵,其完全由字符’W’和字符’.’构成。矩阵中每个字符看作和它上下左右4个还有对角线4个共8个字符为相连的。求给出的矩阵中相连的’W’块有多少个。
样例输入(字符间无空格):
样例输出:
运用DFS搜索。
百度:DFS
参考的题解
代码:
原题链接
题目大意为,给出一个M*N(1<=M,N<=100)的矩阵,其完全由字符’W’和字符’.’构成。矩阵中每个字符看作和它上下左右4个还有对角线4个共8个字符为相连的。求给出的矩阵中相连的’W’块有多少个。
样例输入(字符间无空格):
10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W.
样例输出:
3
运用DFS搜索。
百度:DFS
参考的题解
代码:
#include <iostream> #define MAX 110 using namespace std; int M,N,ponds = 0; char squares[MAX][MAX]; bool isVisited[MAX][MAX]; int fx[8] = {-1, 0, 1,-1, 1,-1, 0, 1}; int fy[8] = {-1,-1,-1, 0, 0, 1, 1, 1}; void dfs(int x,int y) { isVisited[x][y] = true; for(int i = 0; i < 8; i++) { int xx = x + fx[i]; int yy = y + fy[i]; if(!isVisited[xx][yy] && squares[xx][yy] == 'W') dfs(xx,yy); } } int main() { cin >> M >> N; for(int i = 0; i < M; i++) for(int j = 0; j < N; j++) { cin >> squares[i][j]; isVisited[i][j] = false; } for(int i = 0; i < M; i++) for(int j = 0; j < N; j++) { if(!isVisited[i][j] && squares[i][j] == 'W') { ponds ++; dfs(i,j); } } cout << ponds << endl; return 0; }
相关文章推荐
- POJ 2386 Lake Counting
- POJ 2386--Lake Counting [dfs] 《挑战程序设计竞赛》2.1
- 【首先膜拜大湿】poj-2386-Lake Counting-DFS模板题
- POJ-2386-Lake Counting-解题报告
- POJ 2386 Lake Counting(dfs)
- POJ 2386 Lake Counting(DFS)
- DFS:Lake Counting(POJ 2386)
- POJ-2386-Lake Counting
- (Relax DFS专题1.2)POJ 2386 Lake Counting(使用DFS来计算有多少坨东西是连通的)
- POJ 2386 Lake Counting (裸DFS 黑白图像)
- poj 2386 (Lake Counting)
- poj 2386 Lake Counting
- 【BFS】-POJ-2386-Lake Counting
- 文章标题 POJ 2386 : Lake Counting(BFS)
- Poj- 2386 Lake Counting
- POJ 2386 Lake Counting
- poj 2386 Lake Counting(深搜)
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting