问题标签 [maze]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4439 浏览

java - 使用堆栈解决迷宫

我已经在这段代码上工作了一段时间,但似乎无法让它工作。我已经重新开始了很多次。我不确定我的逻辑是否错误,或者我是否可以做得更好。任何正确方向的建议或尝试的新想法都会有所帮助。我知道可以递归解决迷宫,但是对于这部分作业,我需要使用堆栈。

我创建了两个堆栈。一个用于路径,另一个用于我已经搜索过的地点。理想情况下,我会检查搜索到的路径是否包含某个方向的下一个点。如果是这样,它会检查另一个方向。

样品迷宫

0 1 0 1 0
0 0 0 1 0
0 1 0 0 0
0 1 0 1 1
0 1 0 0 0

我的算法似乎卡在 2,3 和 2,4 之间。从不探索 1,4 或 0,4。我看到它在无限循环中不断在 2,3 和 2,4 之间弹跳。所以看来我的 searched.contains() 无法正常运行。有什么建议可以修复我搜索的堆栈吗?理想情况下,当我运行我的代码时。我希望它检查东、南、西然后北是否已经被搜索过。如果已检查所有点,它将在 while 循环中使用 current= path.pop 从我的路径堆栈中弹出最后一个位置并重复。

Position 是一个自定义类。我已经考虑将先前的位置变量添加到位置类中的构造函数,但如果我可以让我的路径堆栈工作,似乎不需要。如果我对此有误,请告诉我。

0 投票
1 回答
4944 浏览

c++ - Reading a text file and creating a maze

I am working on a program that will read a file containing information about a maze and use that information to find a path through the maze. The problem I am having is representing the maze in the array. I am not sure how to turn the X's into integers to represent them as walls in the array. In the one argument constructor I use a for loop to go through the file and put each character into the appropriate array index. The way I have done this clearly does not work and if anybody could give some advice on how properly represent the maze in the array I would appreciate it.

Here is an example of what the file contents will look like. The first set of numbers is the dimensions of the maze in columns and rows. The second set of numbers is row and column position of the exit and the third set of numbers is the row and column position of the entrance.

0 投票
1 回答
2572 浏览

java - 用Java制作迷宫?

我的问题是如何在 Java 中创建一个随机生成的迷宫?我知道创建迷宫的 DFS 方式的主要轮廓,但我很难实现它。在我的程序中,迷宫被保存在一个二维数组中,向数组加 1 会产生一个数组越界异常。我将如何避免这种情况?我不想做一个非常复杂的迷宫,只是一个简单的迷宫。虽然我已经开始创建代码,但我不知道如何使它工作。

DFS 方法的伪代码是:

我不明白你怎么能知道你的邻居的墙壁是否完好无损以及如何摧毁它们。谁能给我一些关于这个程序的见解。非常感激。

0 投票
3 回答
9062 浏览

algorithm - 迷宫求解算法。复杂的迷宫

我发现了几种解决迷宫的算法。那些足够简单的仅适用于出口在外部边界的情况(Wall-follower,质押......)。

是否有一些更复杂的算法来处理边界形状随机、区域成本不等以及出口可能位于迷宫内某处的情况?(顺便说一句,所有元素都是二次的)

更新:此外,我们不知道迷宫的外观,并且只能看到某些区域。

0 投票
1 回答
698 浏览

c - 需要 C 标识符?

我正在开发一个迷宫游戏,所以我查找了一些迷宫生成代码并找到了这个http://en.wikipedia.org/wiki/User:Purpy_Pupple/Maze并且首先我得到了 Expected ',' 并且一旦我放了一个 , 在这条线,它给了我“Mze.c:33: identifier expected”

这是我的修改版本(仅用于修复错误)我刚刚开始学习 C。

0 投票
2 回答
1938 浏览

java - 在迷宫中寻找最短路径

我是业余程序员,学习如何编程。我从来没有上过任何计算机科学课程,所以我很难解决这个小问题:

每个房间都有一些邻居。超过 4 个,所以它不像面向矩阵的问题。你得到了结束房间,你必须找到从开始房间开始的最短路径(比较房间的名称)。结果应该是“方式”,如:

开始于:厨房

结束: 厕所

路径:厨房、客厅、走廊、卧室、卫生间

我想我必须对房间使用一些递归,我认为我应该保存我已经在某个堆栈中的位置。但我真的不知道如何开始。

你们中的一些人可以帮助我吗?谢谢

0 投票
2 回答
1679 浏览

java - Java迷宫解决和强化学习

我正在编写代码来自动模拟忒修斯和牛头怪的动作,如这个逻辑游戏所示;http://www.logicmazes.com/theseus.html

对于每个迷宫,我为其提供迷宫的位置,以及哪些位置可用,例如从位置 0 开始,下一个状态是 1,2 或保持在 0。我运行一个 QLearning 实例化,它计算出忒修斯逃离迷宫的最佳路径假设没有牛头怪。然后介绍牛头怪。忒修斯向出口迈出第一步,不可避免地被抓住,导致重新调整最佳路径。在游戏中使用迷宫 3 作为测试,这种方法导致忒修斯在中间线上上下移动,因为这是唯一没有杀死它的移动。

根据最近几天在这里收到的建议,我调整了我的代码以将状态视为在给定时间的忒修斯和牛头怪的位置。当忒修斯移动时,状态将被添加到“访问状态”列表中。通过将建议移动产生的状态与访问状态列表进行比较,我能够确保忒修斯不会做出会导致以前的状态。

问题是我需要能够在某些情况下重新访问。例如,以迷宫 3 为例,牛头怪每移动一次忒修斯移动 2 倍。忒修斯移动 4 -> 5,添加状态(t5,m1)。米诺移动1-> 5。忒修斯抓住了,重置。4-> 5 是一个糟糕的举动,所以忒修斯移动 4-> 3,mino 轮到他了。现在(t5,m1)和(t3 m1)都在访问列表中

发生的情况是将初始状态中的所有可能状态添加到不访问列表中,这意味着我的代码无限循环并且无法提供解决方案。

以上是忒修斯的移动方法;偶尔显示它暗示随机移动

0 投票
1 回答
323 浏览

algorithm - 用 C++ 表示树

对于动态编程,我存储树的方式有哪些?

我正在做一个任务,要求我解决一个没有左转和右转最小化的迷宫。我的想法是将所有可能的路径存储到树中,然后穿过(遍历)树寻找最小的右转。为了使代码更高效,只要路径涉及

a) 左转 b) 比当前最知名的解决方案右转更多的解决方案

我不会将它添加到树中。希望我对我在这里所做的事情有一个清晰的了解。我真的很感激这方面的意见。

我正在查看存储的树将包含迷宫中所有可能的方向,每个孩子的父级将是前一个位置。我相信有些父母会有两个以上的孩子。

我想知道储存这种树的最佳方法是什么?

先感谢您。

0 投票
2 回答
274 浏览

java - 迷宫无法正确生成。越界异常

我的迷宫生成器似乎有问题。我正在尝试生成类似这样的迷宫 我的程序显示:

在此处输入图像描述

和错误

如何修复我的生成器程序?

0 投票
1 回答
174 浏览

java - 出界异常。在哪里放置边界检查?

我在哪里放置边界检查以便程序生成整个迷宫?代码应该打印一个网格,其中包含通过打破单元格之间的墙壁绘制的迷宫。然而,令我沮丧的是,网格在到达索引 0 或 24 时停止。我需要程序在它停止之前访问每个单元格(如果它进入边界,它会向后移动)。

这是我得到的上一个错误:

这是源代码: