POJ 3984 迷宫(BFS)
入门BFS,第一次做,部分借鉴了大牛的
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std; int a[5][5];
bool visit[5][5];
int dx[4]={0,1,0,-1}; // 四个方向:0为右,1为下,2为左,3为上
int dy[4]={1,0,-1,0}; struct Node
{
int x;
int y;
int s; // 路径长度
int direc[30]; //记录方向
}node,next;
bool judge(int x,int y)
{
if(x<0 || x>4 || y<0 || y>4)
return true;
if(visit[x][y]==true || a[x][y]==1)
return true;
visit[x][y]=true; // 访问后标记一下
return false;
}
Node bfs()
{
queue<Node>q;
visit[node.x][node.y]=true;
q.push(node);
while(!q.empty())
{
node=q.front();
if(node.x==4 && node.y==4)
return node;
q.pop();
for(int i=0;i<4;i++) // 判断四个方向
{
next=node;
next.x=node.x+dx[i];
next.y=node.y+dy[i];
if(judge(next.x,next.y))
continue;
next.direc[node.s]=i;
next.s=node.s+1;
q.push(next);
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
scanf("%d",&a[i][j]);
Node ans=bfs();
int x=0,y=0;
printf("(0, 0)\n");
for(int i=0;i<ans.s;i++)
{
x+=dx[ans.direc[i]];
y+=dy[ans.direc[i]];
printf("(%d, %d)\n",x,y);
}
return 0;
}
POJ 3984 迷宫(BFS)的更多相关文章
- BFS(最短路+路径打印) POJ 3984 迷宫问题
题目传送门 /* BFS:额,这题的数据范围太小了.但是重点是最短路的求法和输出路径的写法. dir数组记录是当前点的上一个点是从哪个方向过来的,搜索+,那么回溯- */ /************* ...
- POJ 3984 迷宫问题(简单bfs+路径打印)
传送门: http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- 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 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】
题目链接 http://poj.org/problem?id=3984 思路 因为要找最短路 用BFS 而且 每一次 往下一层搜 要记录当前状态 之前走的步的坐标 最后 找到最短路后 输出坐标就可以了 ...
- 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, ...
- poj 3984 迷宫问题【bfs+路径记录】
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10103 Accepted: 6005 Description ...
随机推荐
- 【山外笔记-工具框架】iperf3网络性能测试工具详解教程
[山外笔记-工具框架]iperf3网络性能测试工具详解教程 本文下载链接 [学习笔记]iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性 ...
- Ubuntu 16.04 配置单网卡绑定多IP
Ubuntu 16.04 配置单网卡绑定多IP 操作系统 Ubuntu 16.04 LTS 一.单个网卡配置多个IP //在 /etc/network/ 目录下编辑 interfaces 文件 roo ...
- 76-Java安装Eclipse并创建第一个HelloWorld.md
76-Java安装Eclipse并创建第一个HelloWorld.md 首先确定已经安装Java系统环境,若未安装,请参考博客Java环境windows搭建 访问Eclipse官网 下载完成直接发送快 ...
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
写在前面 Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...
- 【分布式】-- 微服务抽奖系统后台整合MyBatis-Plus
1.整合MyBatis-Plus背景 [分布式]-- 基于Nacos.OpenFeign搭建的微服务抽奖系统后台小案例 本篇是基于上一篇博文微服务抽奖系统后台对持久层MyBatis进行更换,并整合My ...
- 【Dubbo】SPI
什么是SPI SPI是JDK内置的一种服务提供发现机制.目前市面上很多框架都用它来做服务的扩展发现.简单的说,它是一种动态替换发现的机制. jdk 实现方式 需要在 classpath 下创建一个目录 ...
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
- python-selenium 引入包或者类的清晰写法
#cording=gbk#一般最上面放系统自带的包或者类import os import time##第二层放第三方下载的包或者类from selenium import webdriverfrom ...
- JAVA面向对象详细总结
面向对象概念 所有操作基于对象进行操作实现 面向对象的三大特征 封装.继承.多态 类:具有相同特征和行为物体的统称 在java中类的定义语法: [修饰符] class 类名{ 属性 ...
- 使用firefox打开网页报错——Error: no display specified
想在linux环境下打开一个网页,环境描述:在窗口模式下,打Terminal,然后从本地服务器ssh到了另一个服务器,想执行firefox命令打开一个网页,如下 [root@pc207 ~]# fir ...