#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
using namespace std;
int a[][],b[][];
int di[][]={,,,-,,,-,};
void bfs(int x,int y)
{
int tx=x,ty=y,i;
if(a[x][y]==)
{
a[x][y]=;
for(i=;i<;i++)
{
tx+=di[i][];
ty+=di[i][];
if(a[tx][ty]==&&tx>=&&ty>=&&tx<=&&ty<=)
{
b[tx][ty]=min(b[tx][ty],b[x][y]+);
}
}
for(i=;i<;i++)
{
tx+=di[i][];
ty+=di[i][];
if(a[tx][ty]==&&tx>=&&ty>=&&tx<=&&ty<=)
bfs(tx,ty);
}
}
}
int main()
{
stack<int>s1,s2;
int i,j,ti,tj,k;
for(i=;i<;i++)
for(j=;j<;j++)
scanf("%d",&a[i][j]);
for(i=;i<;i++)
for(j=;j<;j++)
b[i][j]=;
b[][]=;
bfs(,);
i=;j=;
s1.push();
s2.push();
while()
{
if(j==&&i==)
break;
for(k=;k<;k++)
{
ti=i+di[k][];
tj=j+di[k][];
if(b[i][j]==b[ti][tj]+ && ti>= && tj>= && ti<= && tj<=)
{
s1.push(ti);
s2.push(tj);
i=ti;j=tj;
// printf("%d %d\n",i,j);
break;
}
}
}
while(s1.size()!=)
{
i=s1.top();s1.pop();
j=s2.top();s2.pop();
printf("(%d, %d)\n",i,j);
}
return ;
}

POJ - 3984 迷宫问题 bfs解法的更多相关文章

  1. POJ 3984 - 迷宫问题 - [BFS水题]

    题目链接:http://poj.org/problem?id=3984 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, ...

  2. POJ 3984 迷宫问题 bfs 难度:0

    http://poj.org/problem?id=3984 典型的迷宫问题,记录最快到达某个点的是哪个点即可 #include <cstdio> #include <cstring ...

  3. [POJ 3984] 迷宫问题(BFS最短路径的记录和打印问题)

    题目链接:http://poj.org/problem?id=3984 宽度优先搜索最短路径的记录和打印问题 #include<iostream> #include<queue> ...

  4. POJ - 3984 迷宫问题 BFS求具体路径坐标

    迷宫问题 定义一个二维数组: 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, ...

  5. poj 3984 迷宫问题 bfs

    学会这道水题之后我懂得了不少哈,首先水题也能学到不少知识,尤其像我这样刚入门的小菜鸟,能学到一些小技巧. 然后就是可以从别人的代码里学到不一样的思路和想法. 这题就是求最短的路径,首先想到就是用bfs ...

  6. POJ 3984 迷宫问题 (BFS + Stack)

    链接 : Here! 思路 : BFS一下, 然后记录下每个孩子的父亲用于找到一条路径, 因为寻找这条路径只能从后向前找, 这符合栈的特点, 因此在输出路径的时候先把目标节点压入栈中, 然后不断的向前 ...

  7. POJ - 3984 迷宫问题 dfs解法

    #include<stdio.h> #include<string.h> #include<stack> #include<algorithm> usi ...

  8. BFS(最短路+路径打印) POJ 3984 迷宫问题

    题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...

  9. POJ 3984 迷宫问题(简单bfs+路径打印)

    传送门: http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions ...

随机推荐

  1. MYSQL批量删除大量数据

    DELETE FROM '表' WHERE '字段'=1 会发现删除失败,因为lock wait timeout exceed的错误: 通过LIMIT参数分批删除,因为如果不用limit,删除大量数据 ...

  2. python跨平台注释

    使python程序运行在window以外的平台上 !#  user/bin/python

  3. Ambari2.6.2 HDP2.6.5 大数据集群搭建

    Ambari 2.6.2 中 HDFS-2.7.3 YARN-2.7.3 HIVE-1.2.1 HBASE-1.1.2 ZOOKEEPER-3.4.6 SPARK-2.3.0 注:本文基于root用户 ...

  4. select2的设置选中

    select2插件设置选中值并显示的问题 在select2中,要想设置指定值为选中状态并显示: $("#select2_Id").val("XXXXX").se ...

  5. 19-07 【docker】随笔笔记

    小tips: 1,在nginx的镜像中,并未包含ping工具: 2,在busybox的镜像中,是包含ping工具和telnet工具的,所以如果想测试互通性,可以利用busybox来检查: 实验1:利用 ...

  6. Java API使用

    汉化版Java API使用 首次打开出现的问题 在首次打开API时,可能你会遇见这样的问题. 经过查阅,发现是因为文档的权限问题,文档未解锁造成的.这时候只需要给给它权限就可以. 首先关闭程序,单击右 ...

  7. 关于Android UI 优化

    之前项目为了同时兼容tv和手机端的UI,使用了百分比布局来动态计算控件的宽高,这种适配方案只关心屏幕的宽高(分辨率),与屏幕的像素密度无关. 在新的项目里也使用了这种方案.但是由于项目的运行硬件计算能 ...

  8. kubernetes 常见问题整理

    使用kubectl 命令是报错 报错: [root@k8s-master ~]# kubectl get pod The connection to the server localhost: was ...

  9. Oracle 12c 创建新的数据库实例、用户

    前提:安装好了Oracle 12c数据库,已有一个数据库实例xe,登录用户/密码:system/oralce 我用的是docker安装的Oracle 12c的实例: docker run --name ...

  10. 关于PHP架构师进阶的一些思考

    相信大家都有感觉,就是当程序员写业务写了几年后,就会有想进阶的想法,技术方面当然就是架构师了,然后具体从哪些方面丰富自己才能个达到目的呢?大部分人可能会很迷茫,当然也包括我, 最近和很多大牛交流了一些 ...