[hoj]Red and Black
来源:互联网 发布:软件win8升级win10 编辑:程序博客网 时间:2024/05/30 23:02
经典搜索题。
自己写了个DFS非递归实现。其实还是递归实现比较科学。
BFS用函数也比较好。主要是return方便,递归是进入方便。总之都是停止多重循环中的某一个状态。
/*This Code is Submitted by Iris for Problem 1797 at 2013-07-24 13:31:26*///DFS Stack#include <stack>#include <cstdio>using namespace std;int move[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};typedef struct point{ int x,y;}point;int main(){ int w,h; while(scanf("%d %d",&w,&h)&&(w+h)) { char t[25][25]; for(int i=0;i<h;i++) { scanf("%s",t[i]); } point p0; int map[25][25]; for(int i=0;i<h;i++) for(int j=0;j<w;j++) { if(t[i][j]=='.') map[i][j] = 0; else if(t[i][j]=='#') map[i][j] = 1; else{ map[i][j] = 1; p0.x = i; p0.y = j; } } stack<point> s; s.push(p0); int ans = 1,flag; while(!s.empty()) { //printf("*\n"); flag = 0; point p; p = s.top(); int tx,ty; for(int i=0;i<4;i++) { tx = p.x + move[i][0]; ty = p.y + move[i][1]; if(tx>=0 && tx<h && ty>=0 && ty<w && !map[tx][ty]) { ans++; map[tx][ty] = 1; point tmp = {tx,ty}; s.push(tmp); flag = 1; break; } } if(!flag)//can't move { s.pop(); } } printf("%d\n",ans); } return 0;}
- [hoj]Red and Black
- HOJ 1797 Red and Black
- hoj 1797 Red and Black
- HOJ 1797 Red and Black
- HOJ 1797 Red and Black (DFS)
- [DFS] HOJ 1797 Red and Black
- Red and Black
- red and black
- HDUOJ1312 Red and Black
- Red and Black
- red and black
- Red and Black
- HDOJ Red and Black
- HDU1312( Red and Black )
- Red and Black
- hdu1312 Red and Black
- 深搜:Red and Black
- 1038 Red and Black
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(6)之 游戏主界面 -----绚丽的魔法特效
- SQLSERVER 错误返回代码含义一览
- android之Fragment(官网资料翻译)
- Unexpected text found in layout file: """
- 【C#编程基础学习笔记】4---Convert类型转换
- [hoj]Red and Black
- listView下拉刷新(仿sina微博Android客户端效果)
- 蔡文胜:移动互联网爆发期关键是接地气,不用理会腾讯
- 新人报道
- 自控力 笔记7 出售未来:及时享乐的经济学
- 大一我的学期总结和展望。
- Eclipse中要导出jar包中引用了第三方jar包怎么办
- PADS2007中通过原理图产生网表的错误文件示例
- 【C#编程基础学习笔记】6---变量的命名