UVA - 572 Oil Deposits(DFS)
2016-08-10 21:48
567 查看
题目大意:找出有多少块 @,八个方向相邻就算相连。
解题思路:用一个数组 num 标记该 @ 是否被查找过,若有则返回,八个方向递归查找相邻的 @。统计进入了几次 dfs
在家水了一周多,回校第一题。参考小紫。
2017-7-24
时隔一年,做 kuangbin 的搜索专题又碰到了,恩。。其实没什么区别= =
解题思路:用一个数组 num 标记该 @ 是否被查找过,若有则返回,八个方向递归查找相邻的 @。统计进入了几次 dfs
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> char map[150][150]; int num[150][150]; int cnt, m, n; void dfs(int r, int c, int cn) { if (r < 0 || r >= m || c < 0 || c >= n) return; if (map[r][c] != '@' || num[r][c]) return; num[r][c] = cn; dfs(r-1, c-1, cn); dfs(r-1, c, cn); dfs(r-1, c+1, cn); dfs(r, c-1, cn); dfs(r, c, cn); dfs(r, c+1, cn); dfs(r+1, c-1, cn); dfs(r+1, c, cn); dfs(r+1, c+1, cn); } int main() { while (scanf("%d%d", &m, &n) != EOF && m) { cnt = 0; memset(num, 0, sizeof(num)); for (int i = 0; i < m; i++) scanf("%s", map[i]); for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) if (map[i][j] == '@' && !num[i][j]) dfs(i, j, ++cnt); printf("%d\n", cnt); } }
在家水了一周多,回校第一题。参考小紫。
#include<iostream> #include<stdio.h> #include<algorithm> #include<cmath> #include<string.h> #include<string> #include<queue> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) const int INF = 0x3f3f3f3f; const int NINF = -INF -1; const int MAXN = 100+10; using namespace std; int dx[] = {-1, -1, -1, 0, 1, 1, 1, 0}; int dy[] = {-1, 0, 1, 1, 1, 0, -1, -1}; char map[MAXN][MAXN]; bool vis[MAXN][MAXN]; int m, n; void dfs(int x, int y) { vis[x][y] = 1; for (int i = 0; i < 8; i++) { int X = x+dx[i]; int Y = y+dy[i]; if (X < 0 || X >= n || Y < 0 || Y >= m) continue; if (!vis[X][Y] && map[X][Y] == '@') { dfs(X, Y); } } } int main() { while (scanf("%d%d", &n, &m) && n+m) { for (int i = 0; i < n; i++) scanf("%s", map[i]); int cnt = 0; memset(vis, 0, sizeof(vis)); for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (map[i][j] == '@' && !vis[i][j]) { dfs(i, j); cnt++; } printf("%d\n", cnt); } return 0; }
2017-7-24
时隔一年,做 kuangbin 的搜索专题又碰到了,恩。。其实没什么区别= =
相关文章推荐
- Uva572-poj-1562-hdoj--1241--oil Deposits-DFS
- [uva-572]Oil Deposits (BFS和DFS两种
- Uva 572 - Oil Deposits(DFS)
- 经典第六章 例题 6-12 UVA 572 Oil Deposits(用DFS求连通块)
- UVA572 Oil Deposits dfs
- UVA572(Oil Deposits)(DFS)
- UVa 572 - Oil Deposits【图DFS】
- HDU 1241/UVa572 Oil Deposits(DFS&BFS)
- UVa572 Oil Deposits(DFS)
- UVA 572 Oil Deposits(DFS)
- UVA 572 Oil Deposits (DFS)
- UVA 572 - Oil Deposits(简单DFS)
- 用DFS求连通块(油田Oil Deposits,UVa 572)
- uva 572 Oil Deposits(油田)—— DFS
- UVa 572 Oil Deposits(DFS)
- UVa 572/POJ 1562/HDU 1241 Oil Deposits(DFS,两种写法)
- 【DFS】UVA - 572 Oil Deposits
- UVa 572 Oil Deposits(DFS)
- Uva-572 - Oil Deposits(DFS)
- UVa 572 Oil Deposits(DFS求8连通块)