poj3984(DFS写法) 迷宫路径问题
来源:互联网 发布:r语言金融数据分析 编辑:程序博客网 时间:2024/04/29 07:53
迷宫问题
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6113 Accepted: 3540
Description
定义一个二维数组:
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
Output
左上角到右下角的最短路径,格式如样例所示。
Sample Input
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
Sample Output
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)接着上一遍博客说,上一篇用了BFS,由于本题数据量比较小,用两种方法差不多,主要是训练一下两种搜索方式的思想和写法,注意DFS要回溯,要恢复变量的原状态。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <ctime>#include <queue>#include <stack>#include <vector>#include <algorithm>#include <string>using namespace std;#define forl(i,a,b) for(int i=(a);i<(b);++i)#define forle(i,a,b) for(int i=(a);i<=(b);++i)#define forg(i,a,b) for(int i=(a);i>(b);--i)#define forge(i,a,b) for(int i=(a);i>=(b);--i)#define mes(a,v) memset(a, v, sizeof (a) );#define cpy(a,b) memcpy(a, b, sizeof (a) );#define mesn(a, v, n) memset(a, v, (n)*sizeof((a)[0]))#define cpyn(a, b, n) memcpy(a, v, (n)*sizeof((a)[0]))const int dx[]={1,0,0,-1};const int dy[]={0,1,-1,0};int maze[10][10],visit[10][10];struct Node{ int x,y;};vector<Node>v;bool Dfs(int x,int y){ Node tmp; tmp.x=x,tmp.y=y; v.push_back(tmp); visit[x][y]=1; if(x==4&&y==4) return true; for(int i=0;i<4;i++) { int nex=x+dx[i]; int ney=y+dy[i]; if(!visit[nex][ney]&&!maze[nex][ney]&&nex>=0&&nex<5&&ney>=0&&ney<5) { if(Dfs(nex,ney)) return true; v.pop_back(); //返回原状态 visit[nex][ney]=0; //返回原状态 } } return false;}int main(){ //freopen("in.txt","r",stdin); int i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&maze[i][j]); Dfs(0,0); for(i=0;i<v.size();i++) printf("(%d, %d)\n",v[i].x,v[i].y); return 0;}
- poj3984(DFS写法) 迷宫路径问题
- Poj3984- dfs -迷宫问题
- POJ3984 迷宫问题(DFS)
- H - 迷宫问题 POJ3984 (BFS+DFS)
- 【一周搜索】poj3984迷宫问题 (dfs)
- poj3984迷宫问题(bfs带路径)
- POJ3984 迷宫问题(BFS 记忆路径)
- POJ3984 迷宫问题 (BFS与路径记录)
- poj3984迷宫问题【bfs+记录路径】
- POJ3984 迷宫问题 BFS记录路径
- POJ3984 迷宫问题(BFS+记录路径)
- poj3984 迷宫问题 简单bfs打印路径
- poj3984 迷宫问题(bfs+路径)
- poj3984 迷宫问题(简单搜索+记录路径)
- POJ3984 迷宫问题 BFS
- POJ3984 迷宫问题
- HUD--POJ3984 迷宫问题
- POJ3984 迷宫问题 BFS
- eclipse c/c++编程引用动态库(so)
- 支持向量机通俗导论(理解SVM的三层境界)
- web前端-关于javascript开发的重要知识点
- ApplicationContext接口常用实现类,在web中的实例化配置
- chtmlview 使用内嵌资源比如JPG 无法正常显示的问题
- poj3984(DFS写法) 迷宫路径问题
- 判断顶点是否位于线段上
- springMVC 多个entity(User Famliy) 接收参数处理(属性名称一样)
- 数据库事务的隔离级别
- 关于ViralHeat项目
- MFC学习第五节:计数器(左加右减,存储,清零,提醒
- HDU/HDOJ 3595 Every_SG博弈
- POJ 1087 A Plug for UNIX(一道网络流引起的思考)
- 计算机等级二级c语言历年上机真题第一套