python - 如何在二维数组中创建迷宫
问题描述
我正在解决一个关于解决迷宫的问题并打印将问题弹出到我脑海中的路径.. 是否有任何算法可以创建迷宫。
假设我们有一个任意大小的二维数组
for ex:array = [
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1]]
1 -> no wall 0 -> wall
我只是想创建迷宫...没有解决
虽然我确实在维基百科上找到了一些算法,比如递归回溯,但我不明白如何在节点中应用这些算法。
所以任何人都可以帮助我..?
解决方案
快速回答:
- 将整个地图设置为所有墙壁。选择一个入口和一个出口,将这两个位置设置为无墙;
- 随机选择一堵墙并将其翻转为无墙;
- 用 BFS/DFS 测试出口是否可以从入口进入;
- 如果无法访问,则转到 2,否则转到 5;
- 迷宫已成功创建。
推荐阅读
- ms-access - 在访问vba中从for循环内的每个表中动态删除一行
- java - 如何在一行中通过特定属性对象Java8将arraylist拆分为多个列表
- elasticsearch - Elasticsearch 对衍生聚合进行排序以查找趋势主题
- ruby-on-rails - Rspec - 检查特定模型的 ActiveRecord::Relation 实例
- c# - 使用 EFCore.BulkExtensions 时是否需要调用 SaveChanges
- git - 如何让 git 理解 Mac (CR) 行尾
- c# - 通过 WebApi 获取本地映射文件或目录的 TFS 信息
- ios - iPhone不播放声音但模拟器可以播放声音
- c - 指向 char 数组的指针的内存分配
- wordpress - 使用 htaccess 重定向博客文章 url