POJ - 3984 - 迷宫问题 (DFS)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 10936 | Accepted: 6531 |
Description
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
Output
Sample Input
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
Sample Output
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
思路:DFS题。找到每一条路取最短路径
AC代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#define INF 0x3fffffff
using namespace std; int mp[5][5]; int ans;
struct node {
int x;
int y;
}lu[30], pa[30]; bool vis[8][8]; const int dir[4][2] = {-1, 0, 1, 0, 0, 1, 0, -1}; void dfs(int x, int y, int deep) {
if(x == 4 && y == 4 && deep < ans) {
ans = deep;
for(int i = 0; i < deep; i ++) {
pa[i].x = lu[i].x;
pa[i].y = lu[i].y;
}
}
for(int i = 0; i < 4; i ++) {
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if(tx < 0 || tx > 4 || ty < 0 || ty > 4) continue;
if(mp[tx][ty] == 0 && !vis[tx][ty]) {
vis[tx][ty] = true;
lu[deep].x = tx;
lu[deep].y = ty;
dfs(tx, ty, deep + 1);
vis[tx][ty] = false;
}
}
} int main() {
for(int i = 0; i < 5; i ++) {
for(int j = 0; j < 5; j ++) {
scanf("%d", &mp[i][j]);
}
}
memset(lu, 0, sizeof(lu));
memset(pa, 0, sizeof(pa));
memset(vis, false, sizeof(vis));
ans = INF;
lu[0].x = lu[0].y = 0;
vis[0][0] = true;
dfs(0, 0, 1);
for(int i = 0; i < ans; i ++) {
printf("(%d, %d)\n", pa[i].x, pa[i].y);
}
return 0;
}
POJ - 3984 - 迷宫问题 (DFS)的更多相关文章
- poj 3984 迷宫问题(dfs)
题目链接:http://poj.org/problem?id=3984 思路:经典型的DFS题目.搜索时注意剪枝:越界处理,不能访问处理. 代码: #include <iostream> ...
- POJ - 3984 迷宫问题 dfs解法
#include<stdio.h> #include<string.h> #include<stack> #include<algorithm> usi ...
- BFS(最短路+路径打印) POJ 3984 迷宫问题
题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...
- POJ 3984 迷宫问题
K - 迷宫问题 Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- POJ 3984 迷宫问题(简单bfs+路径打印)
传送门: http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- POJ - 3984迷宫问题(最短路径输出)
题目链接:http://poj.org/problem?id=3984 题目: 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- POJ 3984 - 迷宫问题 - [BFS水题]
题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...
- POJ 3984 迷宫问题 bfs 难度:0
http://poj.org/problem?id=3984 典型的迷宫问题,记录最快到达某个点的是哪个点即可 #include <cstdio> #include <cstring ...
- [POJ 3984] 迷宫问题(BFS最短路径的记录和打印问题)
题目链接:http://poj.org/problem?id=3984 宽度优先搜索最短路径的记录和打印问题 #include<iostream> #include<queue> ...
随机推荐
- linux下mysqldump简单命令导出数据库和表
进入mysql的bin目录执行: 导出单个表: mysqldump -uroot -ppassword --database dbname --tables users > /home/root ...
- tf.slice()解释
转载:https://www.jianshu.com/p/71e6ef6c121b def slice(input_, begin, size, name=None): 其中“input_”是你输入的 ...
- 洛谷 P1169 [ZJOI2007]棋盘制作 (悬线法)
和玉蟾宫很像,条件改成不相等就行了. 悬线法题目 洛谷 P1169 p4147 p2701 p1387 #include<cstdio> #include<algorithm& ...
- Hibernate持久化步骤
1. 读取并解析配置文件 Configuration config= new Configuration().configure(); 相当于使用DataSource获取连接前读取DataSour ...
- solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法
solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法 原创 2015年08月21日 20:47:40 标签: ...
- iOS:UISplitViewController的创建
UISplitViewController是iPad特有的系统方法,主要效果就是呈现iPad的经典切割界面 代码创建实例: - (BOOL)application:(UIApplication *)a ...
- UILite-MFC/WTL/DirectUI界面库
之前写了UILite库介绍: http://blog.csdn.net/zhangzq86/article/details/9093945 如今UILite库能够使用git訪问了: https://g ...
- select多选 multiple的使用
select多选 multiple的使用 <html> <head> <script type="text/javascript"> func ...
- less05 作用域
less @clolor:#ffffff; .bgcolor{ width: 50px; a{ color: @clolor; } @clolor:#ff0000; //覆盖,作用域跟js一样,现在局 ...
- java9新特性-14-多分辨率图像 API
1.官方Feature 251: Multi-Resolution Images 263: HiDPI Graphics on Windows and Linux 2.产生背景 在Mac上,JDK已经 ...