POJ 1979 -- DFS
2016-01-28 14:34
363 查看
题意:
在一个图中,从起点(@)开始,不能走红色堆(#),输出能走的最大的黑色堆(.)的个数。(只能上下左右4个方向)题解
使用dfs进行搜索代码
#include <iostream> #include <cstdio> using namespace std; const int MAXN = 1000; int n,m; char mat[MAXN][MAXN]; int vis[MAXN][MAXN]; int res; typedef struct { int x; int y; }Point ; int direct[4][2]={{-1,0} , {1,0} , {0,-1} , {0,1} }; int dfs(int x, int y) { for(int i = 0; i < 4; i++) { int dx = x + direct[i][0]; int dy = y + direct[i][1]; if( dx < 0 || dy < 0 || dx >= n || dy >= m) continue; if( !vis[dx][dy] && mat[dx][dy] == '.') { vis[dx][dy] = 1; res++; dfs(dx , dy); } } } int main() { while(cin>>m>>n && n != 0 && m != 0) { res = 1; Point start; for(int i = 0; i < n; i++) { //char temp; cin>>mat[i]; } for(int i=0 ;i < n; i++) { for(int j = 0; j < m; j++) { vis[i][j] = 0; if(mat[i][j] == '@') { start.x=i; start.y=j; } } } dfs(start.x, start.y); cout<<res<<endl; } return 0; }
相关文章推荐
- android 更新下载apk
- 数据库备份,及清理备份计划
- bat批处理笔记——为指定类型文件添加前缀名
- 高性能服务器架构
- LINUX - awk命令之NF和$NF区别
- Error:.exe has triggered a breakpoint.
- Android中asset文件夹和raw文件夹区别与用法
- HttpContext.Current.Session 为null
- 转载:Markdown 11种基本语法
- Android中跳转到系统设置界面大全
- 使用SecureCRT连接ubuntu
- Proxifier设置代理
- istream_iterator ostream_iterator 迭代器和IO
- IFrame 加载网页完成事件
- iOS发布APP到APPstore
- window.onload与$(document).ready()对比
- Java删除ArrayList中的重复元素的2种方法
- 数据库水平拆分和垂直拆分区别(以mysql为例)
- [HDU1231]最大连续子序列
- Nature重磅:Hinton、LeCun、Bengio三巨头权威科普深度学习