ZOJ 2412 dfs
2016-05-12 22:31
274 查看
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, { -1, 0}}; const int wat[][4] = {0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1}; const int maxn = 50 + 10; char mp[maxn][maxn]; int n, m; bool vis[maxn][maxn]; void dfs(int x, int y, int id) { vis[x][y] = 1; for (int i = 0; i < 4; i++) if (wat[id][i]) { int tx = x + dir[i][0]; int ty = y + dir[i][1]; int tk = mp[tx][ty] - 'A'; if (tx >= 0 && tx < n && ty >= 0 && ty < m && !vis[tx][ty] && wat[tk][(i + 2) % 4]) dfs(tx, ty, tk); } } int main(int argc, char const *argv[]) { while (scanf("%d%d", &n, &m) == 2 && n != -1) { memset(vis, 0, sizeof(vis)); for (int i = 0; i < n; i++) scanf("%s", mp[i]); int cnt = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (!vis[i][j]) dfs(i, j, mp[i][j] - 'A'), cnt++; printf("%d\n", cnt); } return 0; }
简单题。
相关文章推荐
- iOS学习——self和super关键字的解析
- git基本用法
- Event Loop
- Nine-Patch点九切图法
- 软件开发——软技能(背景)
- android studio 一直在 svn performing vcs refresh
- Java程序员的日常—— 《编程思想》关于类的使用常识
- aardio学习笔记-变量与常量
- 基于ListView的单选、全选、删除功能实现小Demo
- Eclipse exits automatically exit code 127
- MXNet的Model API
- POJ 2104 K-th Number (主席树 静态区间第K大)
- 关于SqlServer2012,附加数据库 失败的一个解决办法
- 七夜在线音乐台开发 第三弹 爬虫篇
- Java实现-高效排序算法之堆排序
- POJ 2104 K-th Number(主席树)
- 迷宫(栈,堆,队列)
- rockmongo-windows安装遇到的问题与解决
- junit4的测试方法的执行顺序
- 学习编程的好网站