下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。

010000

000100

001001

110000

迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这个它的上、下、左、右四个方向之一。

对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,

一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。

对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,

其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。

请注意在字典序中D01010101001011001001010110010110100100001000101010

00001000100000101010010000100000001001100110100101

01111011010010001000001101001011100011000000010000

01000000001010100011010000101000001010101011001011

00011111000000101000010010100010100000101100000000

11001000110101000010101100011010011010101011110111

00011011010101001001001010000001000101001110000000

10100000101000100110101010111110011000010000111010

00111000001010100001100010000001000101001100001001

11000110100001110010001001010101010101010001101000

00010000100100000101001010101110100010101010000101

11100100101001001000010000010101010100100100010100

00000010000000101011001111010001100000101010100011

10101010011100001000011000010110011110110100001000

10101010100001101010100101000010100000111011101001

10000000101100010000101100101101001011100000000100

10101001000000010100100001000100000100011110101001

00101001010101101001010100011010101101110000110101

11001010000100001100000010100101000001000111000010

00001000110000110101101000000100101001001000011101

10100101000101000000001110110010110101101010100001

00101000010000110101010000100010001001000100010101

10100001000110010001000010101001010101011111010010

00000100101000000110010100101001000001000000000010

11010000001001110111001001000011101001011011101000

00000110100010001000100000001000011101000000110011

10101000101000100010001111100010101001010000001000

10000010100101001010110000000100101010001011101000

00111100001000010000000110111000000001000000001011

10000001100111010111010001000110111010101101111000

代码实现

#include

using namespace std;

const int maxn = 1e2 + 10;

typedef long long ll;

#define fi first

#define se second

#define pii pair

char mp[maxn][maxn];

int vis[maxn][maxn];

pairpre[maxn][maxn];

/// D < L < R < U

string ss = “DLRU”;

int Move[4][2] = {1,0, 0,-1, 0,1, -1,0};

int n = 30, m = 50;

void bfs() {

queue q;

q.push(pii(0,0));

vis[0][0] = 1;

pre[0][0] = make_pair(pii(-1,-1), ’ ');

while (!q.empty()) {

pii u = q.front(); q.pop();

int x = u.fi, y = u.se;

for (int i = 0; i < 4; i++) {

int tox = x + Move[i][0];

int toy = y + Move[i][1];

if (tox < 0 || tox >= n || toy < 0

|| toy >= m || vis[tox][toy] ||

mp[tox][toy] == ‘1’) {

continue;

}

vis[tox][toy] = 1;

pre[tox][toy] = make_pair(u, ss[i]);

q.push(pii(tox, toy));

}

}

}

void print(int x, int y) {

if (x == -1 && y == -1) {

return ;

}

print(pre[x][y].fi.fi, pre[x][y].fi.se);

cout << pre[x][y].se;

}

int main() {

freopen(“in.txt”, “r”, stdin);

freopen(“out.txt”, “w”, stdout);

for (int i = 0; i < n; i++) {

scanf("%s", mp[i]);

}

bfs();

print(29,49);

return 0;

}

在同级文件夹添加输入输出文本文档

in.txt

out.txt

迷宫问题 随机 c语言,迷宫问题 C语言相关推荐

  1. 迷宫游戏c语言源程序,C语言迷宫游戏设计(源代码+论文)

    C语言迷宫游戏设计(源代码+论文) 如有需要请联系 QQ:958035640 摘 要 随着科技的日益发展,计算机信息知识越来越被人们所认知和使用,在当今知识爆炸的时代计算机毫不疑问成为人们常用的日常工 ...

  2. c语言迷宫问题课程报告,基于c语言的迷宫问题课程设计

    基于c语言的迷宫问题课程设计 *******************实践教学*******************兰州理工大学软件学院2012 年春季学期算法与数据结构 课程设计题 目: 迷宫问题 专 ...

  3. c语言 迷宫深度遍历 算法,图的遍历迷宫生成算法浅析

    1. 引言 在平常的游戏中,我们常常会碰到随机生成的地图.这里我们就来看看一个简单的随机迷宫是如何生成. 2. 迷宫描述随机生成一个m * n的迷宫,可用一个矩阵maze[m][n]来表示,如图:   ...

  4. 迷宫_随机实验_边做边学深度强化学习:PyTorch程序设计实践(1)

    迷宫_随机实验_边做边学深度强化学习:PyTorch程序设计实践 0.相关文章 1.导入所使用的包 2. 定义迷宫 3.定义迷宫动作 4.策略参数θ转换为行动策略π 5.定义随机移动函数 6.定义使智 ...

  5. Rot.js 随机地牢,迷宫地图生成

    js 插件随机地牢,迷宫地图生成 插件git https://github.com/ondras/rot.js/tree/master/dist 使用: 1.我们的游戏是在网页内进行的;一个基本的 H ...

  6. C语言 迷宫问题求解(顺序栈应用示例)

    [cpp] view plaincopy //顺序栈的应用:迷宫 //作者:nuaazdh //时间:2011年12月7日 #include <stdio.h> #include < ...

  7. c 实现走迷宫流程图_c语言迷宫问题程序功能介绍.设计思路.数据结构设计及用法说明程序结构(流程图).各模块的功能及程序说明....

    满意答案 qiniy808451 2014.01.06 采纳率:40%    等级:13 已帮助:8084人 原来也做过,以下是写的源代码,里面有部分注释,应该能看懂,可以运行.总结的话,把代码写进去 ...

  8. java课程设计总结迷宫_Java课程设计走迷宫详解.doc

    Java语言与面向对象技术 课程设计报告 ( 2014 -- 2015年度第 1 学期) 走迷宫 目 录 目 录2 1 概 述1 1.1 课程设计目的1 1.2 课程设计内容1 2 系统需求分析2 2 ...

  9. fla 走迷宫游戏 源码_迷宫新玩法,果断一试

    迷宫, 真的是谜一样的存在, 大到几十岁的成年人, 小到三岁小儿, 都对其没有抵抗力. 而迷宫君也是真给力, 除了能给人带来愉悦感与成就感, 还能同时锻炼专注力.空间感.思维力.视觉追踪等, 是儿童感 ...

  10. java课程设计总结迷宫_java课设走迷宫(含代码)#优质参考

    java课设走迷宫(含代码)#优质参考 目录1设计目的1.1课程设计的目的2总体设计2.1设计思路2.2设计方法3关键技术4程序流程5主要源代码6. 运行结果及结论7.参考文献1.设计目的1.1课程设 ...

最新文章

  1. dataTables常用参数
  2. 大数据能力提升项目| 学生成果展系列之二
  3. 【JavaScript】核心语法之数组
  4. robolectric android studio,Android Studio + Robolectric + AndroidAnnotations 根本框架
  5. c#数组赋初值_【自学C#】|| 笔记 13 数组
  6. B00007 快速模幂运算的两个C语言程序
  7. 基于QT的UDP测试工具
  8. Nature、Science、Cell、Plos系列顶级学术杂志解析
  9. Luogu1527[国家集训队]矩阵乘法
  10. 使用Labwindows开发DAQmx
  11. 计算机个人市场调查实验报告,市场调查实验报告(一)
  12. zk实现主从选举-java
  13. AriaNg 是一个让 aria2 更容易使用的现代 Web 前端
  14. Excel中提取单元格(括号)内的信息
  15. “小智特惠” Android版已经登录各大电子市场,欢迎试用
  16. 推荐一款专业制作手机铃声的音乐剪辑器?
  17. Tools/Profiler
  18. 在线制作动态显示折线图
  19. android 内部 存储空间不足,安卓手机内存空间不足的解决方法
  20. 交换机和路由器有什么区别?

热门文章

  1. linux重命名用户名_如何在Linux中更改或重命名用户名和用户ID?
  2. 基于FPGA的双目相机目标深度图像提取实现——详细版
  3. AndroidStudio 配置NDK
  4. office365前端js效果
  5. linux移动文件命令使用方法,如何使用Linux命令或文件管理器来移动文件?
  6. B站 | 我擦!不愧是搞技术的,竟然可以用这种骚操作来提升B站等级~
  7. 个人邮箱登陆,邮箱登录入口有哪些?有移动办公app吗?
  8. 桌面开发:Electron 代码打包 asar
  9. 计算机系统网络与电信杂志,电脑与电信
  10. 作为一个程序员,会使用一些电脑快捷键很有需要