当前位置: 首页 > 知识库问答 >
问题:

回溯与递归解迷宫

邹博裕
2023-03-14

我的任务是用回溯和递归的方法解决一个迷宫。这更多的是一个关于这个概念的概念问题。

回溯电话是如何接通的?从我所看到的所有示例来看,似乎递归总是在回溯步骤之前立即调用,所以回溯是无法实现的。谁能给我解释一下回溯步骤是怎么达到的?

共有1个答案

关冠宇
2023-03-14

回溯发生在递归返回时。例如,如果您在A位置,并且有两个相邻的位置,B和C,您可以对B进行递归调用。当它完成对迷宫的这一部分的探索后,它将返回(即回溯)到A位置的调用,然后在C位置进行新的递归调用。

 类似资料:
  • 我正在开发高级培养皿网络编辑器/模拟器。首先,这里有一些词汇 圆圈=位置 矩形=过渡 就地整数 = 标记 过渡状态=防护 我被困在通过过渡的守卫。守卫是一个条件,如果你想执行转换,这需要是真的。我知道我应该以某种方式使用回溯,但我不知道在程序开始之前进入过渡的位置数,所以我不能使用循环,因为我不知道我需要多少个循环。 所以,我想从第一位获取第一个令牌,从第二位获取第一令牌,然后尝试通过守卫,如果通

  • 我有一个基本的回溯算法,可以为我生成迷宫。但有时它不会“访问”所有的瓷砖/单元。我想知道出了什么问题,算法正确地进行了回溯,它应该检查每个磁贴/单元的所有方向,但“未访问”的磁贴/单元根本不会被触碰。 这是回溯算法: 如果您感兴趣,这是方法: 它只是根据算法的方向将正确的墙标志设置为true。 在10x10的迷宫中,这种情况似乎发生了大约1/10次。问题块没有被访问,因此算法根本不会处理它们。但是

  • 我试图用C++中的回溯和递归来解决C++中的幻方问题。特别适用于4x4数组。 4x4幻方解的一个例子如下,其中每行、每列和对角线加34: 我所做的更改是:用户输入一些值,这些值将启动算法。 我的算法是这样的: 在这里你可以更好地欣赏图像。 我有一个概念,算法应该如何工作,以解决幻方的问题,回溯和递归,但我有问题。 其中之一是: 成就并没有让我的算法“忽略”用户已经输入的值。 我在C++中的代码在G

  • 我正在为suduko解算器编写一个递归回溯算法。看起来suduko的情况很糟糕。 代码: s是由节点对象组成的。每个节点对象都有一个(x, y)表示板子,一个值,它可以是一个数字,也可以是一个没有赋值的句点,还有一个平方值(suduko的平方是多少)。 我知道,我的方法和都有效检查棋盘是否正确求解,检查如果suduko游戏的约束条件成立,我是否将给定的节点设置为给定棋盘上的给定值。 出于某种原因,

  • 我的问题是,当一个9不能正确添加时,该方法会中断。不知何故,我不知道如何让它回到前一点,并向上数,这将创建一个新的“路径”,所以我想如果我做对了,一切都应该很好。我仍然在使用递归:-/ 正如我所知,我认为Sudokurecrect()做了它应该做的事情。编辑:您可以忽略布尔测试。我知道我不使用它,我试着想一些东西,但显然我不知道如何使用它。 输出为 在那之后,不管检查哪个变体。所以问题是一样的。

  • 我对编码还是很陌生的,我正在尝试一些稍微困难的主题,例如修改数独递归回溯程序的解决方案。最初的解决方案是针对大小为3x3的数独,我希望我的解决方案可以与正常大小的数独(9x9)一起使用。3x3解决方案在这里找到。 我觉得我对算法非常了解:对于网格中的每个列表(包含该单元格的可能值),在每一步尝试每个数字,确保电路板仍然有效,移动到下一个列表,分配一个可能的数字直到其有效,等等。如果当前电路板不正确