K - 迷宫问题

POJ - 3984

定义一个二维数组:

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

一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。

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)

嘿嘿,继上一题之后开心了一丢丢,虽然很简单~~~~

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <queue>
#include <stack>
using namespace std;
struct Node{int x,y;
};
struct Pass{int x,y;
}s[8][8];
struct ST{int m,n;
};
int dirx[4]={1,-1,0,0};
int diry[4]={0,0,1,-1};
int maze[8][8],book[8][8];//刚开始的初始化为0
void BFS()
{Node beginn ={0,0};//设置开始的那个位置为1,1;queue<Node>mq;mq.push(beginn);s[0][0].x=-1;s[0][0].y=-1;book[0][0]=1;Node temp,endd;while(mq.empty()==0){temp=mq.front();mq.pop();for(int i=0;i<4;i++){int fx=temp.x+dirx[i];int fy=temp.y+diry[i];if(fx<0||fy<0||fx>4||fy>4||book[fx][fy]==1||maze[fx][fy]==1)continue;else{endd.x=fx;endd.y=fy;book[fx][fy]=1;s[fx][fy].x=temp.x;s[fx][fy].y=temp.y;mq.push(endd);if(endd.x==4&&endd.y==4) break;         }}}
}
int main()
{for(int i=0;i<5;i++){for(int j=0;j<5;j++)scanf("%d",&maze[i][j]);}//读入BFS();
/*  for(int i=0;i<5;i++){for(int j=0;j<5;j++)printf("%d %d==      ",s[i][j].x,s[i][j].y);cout<<endl;}
*/stack<ST>ss;ST gg;gg.m=4,gg.n=4;ss.push(gg);int a=4,b=4;while(a!=-1&&b!=-1){gg.m=s[a][b].x;gg.n=s[a][b].y;ss.push(gg);int gg=a,kk=b;a=s[gg][kk].x;b=s[gg][kk].y;}ss.pop();while(ss.empty()==0){gg=ss.top();ss.pop();printf("(%d, %d)\n",gg.m,gg.n); }return 0;
}

K - 迷宫问题 POJ - 3984(广度搜索)相关推荐

  1. K - 迷宫问题 POJ - 3984

    K - 迷宫问题 POJ - 3984 5*5迷宫,输出从(0,0)走到(4,4)的最短路径 类似康托,自己弄个一一对应的公式即可 #include<iostream> #include& ...

  2. 迷宫问题 POJ - 3984

    题目 定义一个二维数组: 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 ...

  3. 【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】

    POJ3126Prime Path 给定两个四位素数a  b,要求把a变换到b 变换的过程要 每次变换出来的数都是一个 四位素数,而且当前这步的变换所得的素数  与  前一步得到的素数  只能有一个位 ...

  4. POJ 3984 迷宫问题 (Dijkstra)

    迷宫问题 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, ...

  5. Ali and Snoopy(利用广度搜索走迷宫)

    Judge Info Memory Limit: 32768KB Case Time Limit: 1000MS Time Limit: 1000MS Judger: Number Only Judg ...

  6. 万能的搜索——深度搜索和广度搜索

    搜索分为深度优先搜索(dfs)和广度优先搜索(bfs) 深度搜索和广度搜索的区别是: 深度搜索是往深度方向进行搜索的,先选一条路走到底,再选另一条路: 广度搜索是一层一层的,把一层上的所有情况都搜索到 ...

  7. 【图】图的深度搜索和广度搜索

    深度优先搜索 图的深度优先遍历(Depth First Search,DFS)是一种遍历图的算法,其基本思想是从起始顶点开始,不断访问邻接顶点,直到无法继续访问为止,然后回溯到之前的顶点,继续访问其未 ...

  8. 深度搜索问题c语言,C语言实现的图的深度搜索与广度搜索程序.doc

    C语言实现的图的深度搜索与广度搜索程序 C语言实现的图的深度搜索与广度搜索程序 /* 上机试验5-图的建立和遍历 1)建立[无向][非连通]图的邻接表存储结构,要求顶点个数不少于15个. 2)用DFS ...

  9. 【算法】深度搜索(DFS) 和 广度搜索(BFS)

    深度搜索(DFS) 点:然后退回到该顶点,搜索其它路径,直到以该顶点为始点的所有路径的顶点都被访问,深度搜索算法是递归算法,因为对于没一个节点来说,执行的是同样的操作.  简单来说,深度搜素算法就是一 ...

  10. 深度搜索(DFS)和广度搜索(BFS)

    深度搜索(DFS) 一.搜索方法:  沿出发顶点的第一条路径尽量深入,遍历路径上所有顶点:然后退回到该顶点,搜索其它路径,直到以该顶点为始点的所有路径的顶点都被访问,深度搜索算法是递归算法,因为对于没 ...

最新文章

  1. 【camera】基于深度学习的车牌检测与识别系统实现(课程设计)
  2. 08 Spring框架 AOP (一)
  3. [链表]同时遍历两个链表
  4. CF 317D Game with Powers
  5. Aittit rpc的实现协议 JSON-RPC XML-RPC . Ws协议webservice 目录 1. XML-RPC协议 1 1.1. JSON-RPC远程调用协议 - CieloSun
  6. java编程思想笔记(一)——面向对象导论
  7. ensp动态路由ospf配置
  8. 视频编码格式——h264优点
  9. #英语# 表示人的名词后缀论文文献
  10. 论文阅读:在Stiefel流形上的黎曼优化
  11. sqli-labs(50-53)
  12. adb和夜神模拟器安装
  13. Linux学习(2)---绝对路径和相对路径
  14. 路由器自动获取ip失败
  15. 大型网站架构提速关键技术(页面静态化、memcached、Mysql优化)
  16. 前端代码 (html css JavaScript DOM JSON)
  17. 计算机语言的学习方法
  18. 集成Google广告的一点错误
  19. 关于Ansi版Delphi剪切板中文乱码的问题
  20. 外汇天眼:新手炒外汇止损止盈技巧有哪些?如何设置止损止盈?

热门文章

  1. 算法 判断多个点是否在同一圆周线上_广州灵活计费自动出盘机技术方案大盘点...
  2. 提问的智慧 - How To Ask Questions The Smart Way
  3. Swift3.0:Get/Post同步和异步请求
  4. 杭州云栖大会10月起航,这里有一份最全的大会剧透
  5. spring框架包含的模块
  6. eBay把平台更新为Kubernetes、Envoy和Kafka:计划开源硬件和软件
  7. JavaScript数字精度丢失的一些问题
  8. ASP.NET vNext MVC 6 电商网站开发实战
  9. Rust 程序语言资料
  10. 跟我一起数据挖掘(22)——spark入门