dfs
来源:互联网 发布:网络发帖犯法吗 编辑:程序博客网 时间:2024/06/10 08:22
这道题还算简单,题意是求在这10*12的矩阵中有几个 联通的W区域。
大概就是用dfs,深度搜索,从(0,0)开始,只要搜到W,就将计数变量自增,然后开始dfs,并将访问过的W变为
。即可,最后的计数变量的值就是联通区域个数。
代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <map>#include <vector>#include <set>using namespace std;int N, M;int cnt = 0;char m[550][550]={'.'};void DFS(int i, int j){ if(m[i][j] == 'W') m[i][j] = '.'; else return; DFS(i+1,j); DFS(i+1,j+1); DFS(i+1,j-1); DFS(i-1,j); DFS(i-1,j+1); DFS(i-1,j-1); DFS(i,j+1); DFS(i,j-1); return;}void dfs(){ int i, j; for(i=1; i<=N; i++) { for(j=1; j<=M; j++) { if(m[i][j] == 'W'){ cnt++; DFS(i, j); } } }}int main(){ cin >> N >> M; int i,j; for(i=1; i<=N; i++) { for(j=1; j<=M; j++) { cin >> m[i][j]; } } dfs(); cout << cnt <<endl; return 0;}
1 0
- DFS
- DFS
- dfs
- dfs
- dfs
- dfs
- DFS
- DFS
- dfs
- DFS
- DFS
- DFS
- dfs
- DFS
- dfs
- dfs
- dfs
- dfs
- 【学习OpenCV】—— 深入了解 cv::Mat
- 单例模式
- Eclipse_Android问题锦集
- 指针与引用的区别
- 排序算法---2
- dfs
- 编译qt-mobility 1.2.0
- Hibernate 3.2 必需包
- Android Studio 项目中,哪些文件应该忽略而不提交到svn的服务器中?
- Activiti 实战篇 小试牛刀
- poj 2481 Cows 树状数组or线段树
- Android 安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
- 数据类型,变量小知识点
- Android系统服务概要