POJ - 3984 迷宫问题 bfs解法
#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解法的更多相关文章
- 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> ...
- 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, ...
- poj 3984 迷宫问题 bfs
学会这道水题之后我懂得了不少哈,首先水题也能学到不少知识,尤其像我这样刚入门的小菜鸟,能学到一些小技巧. 然后就是可以从别人的代码里学到不一样的思路和想法. 这题就是求最短的路径,首先想到就是用bfs ...
- POJ 3984 迷宫问题 (BFS + Stack)
链接 : Here! 思路 : BFS一下, 然后记录下每个孩子的父亲用于找到一条路径, 因为寻找这条路径只能从后向前找, 这符合栈的特点, 因此在输出路径的时候先把目标节点压入栈中, 然后不断的向前 ...
- POJ - 3984 迷宫问题 dfs解法
#include<stdio.h> #include<string.h> #include<stack> #include<algorithm> usi ...
- BFS(最短路+路径打印) POJ 3984 迷宫问题
题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...
- POJ 3984 迷宫问题(简单bfs+路径打印)
传送门: http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
随机推荐
- OGRE中Any 类型的实现
[OGRE中Any类型的实现] OGRE中实现了一个class Any,使用Any 可以在上下文中传递任意类型的数据.其本质实现原理就是通过指针. Any 只包含一个成员变量,类型为 placehol ...
- mybatisplus打印sql语句
package com.osplat.config; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; ...
- 解决访问HTTPS,抛出的异常javax.net.ssl.SSLHandshakeException
本地测试没问题,http换成https抛出异常javax.net.ssl.SSLHandshakeException,网上有说是服务器证书,有说要启动SSL3协议的,反正没有找到有用的. 在GET和P ...
- 【MYSQL】MYSQLの環境構築
ダウンロード:https://dev.mysql.com/downloads/mysql/ 手順① 手順② mysql.iniの設定について [mysql]default-character-set= ...
- 自定义Log 写到文件中
using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Text ...
- python基础 ---- 安装
------ 安装两个软件就行了 1.Anaconda 地址: 作用: 管理不同版本的python 的第三方包 下载第三方依赖包和构造版本开发环境 2.python常用的IDE环境 2.1 P ...
- eleTree树形插件引入
先放一个效果 @eleTree插件官网 刚开始用的xtree,不知为何总是达不到效果,不得已从layui官网插件中寻得这个eleTree插件,看着还不错,用法也简单.不过还是有点坑需要大家注意 开始使 ...
- XML字符串转为Map
import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException;import java.util.Ha ...
- odoo TransientModels must have log_access turned on
- [二分答案][NOIP2015]跳石头
跳石头 题目描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不含起 ...