The problem of maze(经典迷宫问题) DFS版
又是这个题,上学期看过,但当时没能力自己写下来,只是把别人的代码认真的看了一遍。今天,终于自己把它给弄出来了。嘿嘿,经过自己思考的才能真正成为自己的东西。把这题做出来,可以说把DFS最基本的东西理解了。还应该学会灵活应用,那就得看日后的多多练习了。加油。
题目大意:输入一个h*w的矩阵,1表示blocks,0表示空白,2表示起点,3表示出口。寻找各种可以出来的方法。
simple input:
4 4
1201
1100
3010
1000
0 0
simple ouput:
#include <iostream>#include <cstdio>#include <fstream>#include <memory.h> #define MAX 10using namespace std; int dir[4][2]={0,1,-1,0,0,-1,1,0};int map[MAX][MAX];char s[10];int w,h;int start[2],end[2];int flag; struct node{int x,y,fa; node(int x1,int y1,int fa1) { x=x1;y=y1;fa=fa1; } node(){}}nn[100]; void getmap(){for(int i=0; i<h ; i++) { scanf("%s",s); getchar();for(int j=0 ; j<w ;j++) { map[i][j]=s[j]-'0';if(map[i][j]==2) { start[0]=i; start[1]=j; map[i][j]=1; }if(map[i][j]==3) { end[0]=i; end[1]=j; } } }} void printmap(int k){if(k==0) return;else { printmap(nn[k].fa); printf("(%d,%d,%d) ",nn[k].x,nn[k].y,nn[k].fa+1); }} void dfs(int x,int y,int step){int sx,sy;if(x==end[0] && y==end[1]) { flag=1; nn[step+1]=node(x,y,step); printmap(step); printf("\n");return; }for(int i=0; i<4; i++) { sx=x+dir[i][0]; sy=y+dir[i][1];if(map[sx][sy]!=1 && sx>=0 && sx<h && sy>=0 && sy<w) { nn[step+1]=node(sx,sy,step); map[sx][sy]=1; dfs(sx,sy,step+1); map[sx][sy]=0; } }}int main(){ freopen("acm.txt","r",stdin);while(scanf("%d%d",&h,&w)!=EOF && (w+h)) { flag=0; getmap(); nn[1]=node(start[0],start[1],0); dfs(start[0],start[1],1);if(!flag) { printf("Impossible!\n"); } }return 0;}
转载于:https://www.cnblogs.com/Jason-Damon/archive/2012/03/12/2392189.html
The problem of maze(经典迷宫问题) DFS版相关推荐
- 经典迷宫问题(C++)简单DFS算法
经典迷宫问题(C++) *给出一个起点S 输入地图 '.' 代表可以走 ' '代表墙壁不能走 'T'代表终点 question:判断是否能够能从到达终点 (不要求最短路径) thinking and ...
- 蛮力法 —— 求解迷宫问题 —— DFS和BFS
求解迷宫问题 问题描述: 有如图8×8的迷宫 OXXXXXXX OOOOOXXX XOXXOOOX XOXXOXXO XOXXXXXX XOOOOXOO XXXXXXXO 其中,O表示通路方块,X表示 ...
- Word Maze单词迷宫C语言解法(详细注解)
Word Maze单词迷宫C语言解法(详细注解) 题目描述 C语言代码 DFS算法 题目描述 Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.假设给定 ...
- 2015年华为实习生机试样题(记票统计,计算麻将的番数,Word Maze(单词迷宫))
这是华为今年实习生招聘给的样题,还是特别喜欢考字符串处理问题. 记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B" ...
- 华为软件类校招 2014年9月3日 熟悉机考环境 1.记票统计 2.求最大递增数 3.Word Maze(单词迷宫)
(样题,已对外公布)记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B"."C"." ...
- 蓝桥杯-迷宫(DFS)
蓝桥杯-迷宫(DFS) 题目描述 X 星球的一处迷宫游乐场建在某个小山坡上.它是由 10 \times 1010×10 相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡 ...
- HDU杭电OJ经典100题2000-2099_Java版详细题解(持续更新)
今年寒假打算用Java把杭电2000-2099全部AC(现在持续更新),如下是题目链接,之后是我的题解,全部做完后我会把所有AC的题解打包上传的 题号 题名 题号 题名 2000 ASCII码排序 2 ...
- dfs版SPFA判负环
例题 Description 泡泡鱼是一条调皮的鱼,ta的家住在一片珊瑚礁上.在ta的眼里,这些珊瑚礁的形态可以脑补成一个n个节点,m条边的带权图,在海水的腐蚀下,这些珊瑚礁形成了许多的环,ta想考考 ...
- 《iOS 8应用开发入门经典(第6版)》——第1章,第1.6节小结
本节书摘来自异步社区<iOS 8应用开发入门经典(第6版)>一书中的第1章,第1.6节小结,作者 [美]John Ray(约翰 雷),更多章节内容可以访问云栖社区"异步社区&qu ...
最新文章
- 看似简单的问题 静态方法和实例化方法的区别
- android 工程中引入第三方JAR包后安装APK时老是提示找不到库文件?
- Apache Camel 3的工作终于开始了
- mydate97设置时间
- Firefox搜索框:自动出现添加搜索的提示
- 写代码需要注意的几方面
- asp.net 报表页面模板_Stimulsoft ASP.NET MVC报表教程:在设计器中保存报表模板
- WebView断网提示
- 13个不容错过的Java项目
- 基于RFID技术的智能交通解决方案
- bzoj 1984: 月下“毛景树”
- 怎样打开t6系统服务器,t6客户端如何连接服务器
- zookeeper-集群-选举机制
- 小梅哥Xilinx FPGA学习笔记10——串口通信发送
- 蛮荒搜神记服务器在维护,蛮荒搜神记法宝洗练图文教程 蛮荒搜神记如何提升战斗力?-游侠网...
- python递归解压文件_递归调用解压zip包或rar包
- 计算机文件查看隐藏文件,电脑隐藏文件怎么显示啊,明明点了显示所有文件,按了确定后,又恢复了原来样子,为什么啊...
- @Deprecated(注解)
- as5300g2 nas软件功能_硬件与软件齐飞,首款支持2.5G网络的品牌NAS-华芸AS-5202T测评体验...
- 云计算的“傲慢”与“偏见”