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, 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)
//update:2019蓝桥杯原题变式
BFS经典题。需要在结构体中定义c记录当前下标,用f记录父节点下标。输出路径时由叶节点遍历到根节点,逆序输出。
#include<stdio.h>
#include<queue>
using namespace std; int a[][],b[][],rx[],ry[];
int t[][]={{,},{,},{-,},{,-}};
struct Node{
int x,y,s,f,c;
}node[];
int main()
{
int c,tx,ty,f,i,j;
queue<Node> q;
for(i=;i<=;i++){
for(j=;j<=;j++){
scanf("%d",&a[i][j]);
}
}
node[].x=;
node[].y=;
node[].s=;
node[].f=;
node[].c=;
b[][]=;
q.push(node[]);
c=;f=;
while(q.size()){
for(i=;i<;i++){
c++;
tx=q.front().x+t[i][];
ty=q.front().y+t[i][];
if(tx<||ty<||tx>||ty>) continue;
if(a[tx][ty]==&&b[tx][ty]==){
b[tx][ty]=;
node[c].x=tx;
node[c].y=ty;
node[c].s=q.front().s+;
node[c].f=q.front().c;
node[c].c=c;
q.push(node[c]);
}
if(tx==&&ty==){
int cc=c;
for(j=node[c].s+;j>=;j--){
rx[j]=tx-;
ry[j]=ty-;
cc=node[cc].f;
tx=node[cc].x;
ty=node[cc].y;
}
for(j=;j<=node[c].s+;j++){
printf("(%d, %d)\n",rx[j],ry[j]);
}
f=;
break;
}
}
if(f==) break;
q.pop();
}
return ;
}
POJ - 3984 迷宫问题 BFS求具体路径坐标的更多相关文章
- 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
学会这道水题之后我懂得了不少哈,首先水题也能学到不少知识,尤其像我这样刚入门的小菜鸟,能学到一些小技巧. 然后就是可以从别人的代码里学到不一样的思路和想法. 这题就是求最短的路径,首先想到就是用bfs ...
- [POJ 3984] 迷宫问题(BFS最短路径的记录和打印问题)
题目链接:http://poj.org/problem?id=3984 宽度优先搜索最短路径的记录和打印问题 #include<iostream> #include<queue> ...
- POJ 3984 迷宫问题 (BFS + Stack)
链接 : Here! 思路 : BFS一下, 然后记录下每个孩子的父亲用于找到一条路径, 因为寻找这条路径只能从后向前找, 这符合栈的特点, 因此在输出路径的时候先把目标节点压入栈中, 然后不断的向前 ...
- POJ - 3984 迷宫问题 bfs解法
#include<stdio.h> #include<string.h> #include<algorithm> #include<stack> usi ...
- BFS(最短路+路径打印) POJ 3984 迷宫问题
题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...
- POJ 3984 迷宫问题(简单bfs+路径打印)
传送门: http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- (简单) POJ 3984 迷宫问题,BFS。
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, ...
随机推荐
- 蓝桥杯 算法训练 ALGO-108 最大的体积
算法训练 最大体积 时间限制:1.0s 内存限制:256.0MB 问题描述 每个物品有一定的体积(废话),不同的物品组合,装入背包会战用一定的总体积.假如每个物品有无限件可用,那么有些体积是永 ...
- contiki学习心路历程【转】xukai871105 大神
https://blog.csdn.net/xukai871105/article/details/9072993
- java数组求输入平均值
真是学了后面忘了前面,一维数组都忘了 package com.c2; //总结类型转换不对,导致运行报错 //以及没有new,导致空指针异常 //引入流. import java.io.*; publ ...
- casperjs 安装试用
纠结了好久,一直报错, 具体错误信息现在已经忘了,后来看了官网的prerequisite,才知道要安装特定版本或greater 的 phantomjs 和 Python.我这边主要是没装python. ...
- Elasticsearch5.6安装
Elasticsearch5.6安装 1.下载 5.6.8 sudo curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/e ...
- 微信小程序的基本认识
小程序与公众号的区别 小程序,不支持关注,消息推送等营销手段. 小程序更倾向于产品,公众号更倾向于营销. 在系统权限方面,小程序能够获得更多. 小程序与APP的区别 小程序,面向微信用户.app面向所 ...
- IntelliJ IDEA中如何设置忽略@param注释中的参数与方法中的参数列表不一致的检查
- 使用QuartZ.net来做定时计划任务 ; 值不能为 null。 参数名: assemblyString
1. 当异常的时候, 发现需要的类名, 没有取到, 然后就发生异常了 2. 分析: 业务层调用数据层, 数据层去掉配置的时候, 发现配置文件中根本就没有配置, 这个时候使用反射来取, 肯定是拿不到的, ...
- IO模型比较分析
异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入.先看一下它的流程: 用户进程发起read操作之后,立刻就可以开始去做 ...
- BGP基本配置的方法
边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议. BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议. as100 as200 ...