问题标签 [knights-tour]
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.
java - 8x8 Knights Tour Java 内存不足
此代码适用于 5x5、6x6、7x7,但在 8x8 中内存不足。我将内存增加到2048M,但它仍然不起作用。代码应该使用 Stack 类和回溯作为解决方案的一部分这是代码:
可能的问题是什么?
algorithm - 骑士之旅在线性时间内解决
我知道如何使用回溯来解决骑士的旅行问题。这通常是一个类似于汉密尔顿循环的问题。但它是在wiki中写的,它可以在线性时间内解决。
它写道,通过将电路板分成更小的部分,在每个部分上构建游览,并将这些部分拼凑在一起,可以在多项式时间内在大多数矩形板上构建游览。
请解释这怎么可能。
java - 骑士之旅 - 导致无限循环,我不知道为什么
我正在尝试使用回溯解决骑士的旅行问题。我认为我拥有的算法应该可以工作。我试过了,但我不知道为什么它不起作用。它导致无限循环。
但是,如果我注释掉回溯的行,solutionBoard[dst.x][dst.y]=-1;
它就可以工作!我只是不明白为什么!任何帮助,将不胜感激。
c# - 8x8无限递归的骑士之旅
这将是我著名的 8x8 甲板骑士之旅的代码。所以,我的代码的主要思想是:我们将从 Turns 中选择我们的目的地,用 isPossible 检查它,然后递归到它,将此单元格标记为“1”。所以,检查每个单元格,如果我们将在 64 的单元格中 - 返回 true。但是我的代码会无限递归,我无法调试它,任何建议都将不胜感激。
java - 骑士之旅随机移动选择器不起作用
我正在努力随机化我的骑士在我的骑士的旅游代码中采取的行动。但由于某种原因,我的 switch 语句总是默认,而不是执行可能的移动。我知道我可能的移动方法有效,因为我已经单独运行firstMoveChoice()
它自己并且它有效。所以我知道问题出在我的随机移动选择器上,但我似乎无法弄清楚。
提前感谢您的帮助和时间!非常感谢,因为我已经查看了这个问题并且找不到答案。
这是上面代码的结果:
这是我的主要方法:
这是我的棋盘类:
这是firstMoveChoice()
这里是thirdMoveChoice()
:它实际上和其他所有的一样,除了不同动作的数字变化。
python - 用多个棋子游览棋盘 [Python]
我一直试图连续两天解决这个问题,但我找不到有效的算法。给定一个棋盘和一些棋子,我必须检查所述棋盘是否可以被棋子游览,条件是每个棋子只能访问一个广场一次。我知道这是某种多重回溯,但我无法让它发挥作用。(我只能为个别作品实施一般骑士之旅)
tablero
是棋盘的一个类,它包含一个名称、一个棋子列表、一个包含禁止位置的列表、一个包含空闲位置的列表以及一个包含棋盘尺寸的元组。
ficha
是棋子的类,它包含一个名称nombre
(只前进 1)posicion
movimientos
欢迎任何见解。
这里是类(随意添加/删除任何方法)。
python - 骑士之旅回溯
我正在研究骑士的旅行问题,并使用回溯算法。我的代码最终没有产生正确的输出,它只是一遍又一遍地重复最后两个条目,直到没有达到 n^2 -1 。
这是我的代码。我正在关注这个伪代码http://www.wou.edu/~broegb/Cs345/KnightTour.pdf
c++ - 我的骑士之旅的实现无效,可能是递归调用错误
目前我正在尝试理解递归。在实现了一些简单的递归算法(如阶乘)之后,我决定尝试一些更难的东西。
我发现了有关骑士之旅的问题,并尝试制作一个程序来找到有效的骑士之旅。
当然它不起作用,输出是一个无限循环。
我看不到错误。我正在自学,没有人问这个问题,所以我决定在这里问。
这是我的 C++ 代码:
python - 我在骑士之旅的 DFS 中缺少什么?
我正在尝试使用 DFS解决骑士之旅问题。我生成了我的图表(在这个例子中我有 5x5 矩阵):
然后我试图调用 DFS 来查找长度为 25 的路径(到达每个正方形)。为此,我跟踪当前路径,将其与所需长度进行比较,如果未达到,则递归地跨越所有邻居的 DFS。如果没有未经检查的邻居(我们到达了死胡同,但仍有应该到达的方块),我将从路径中删除最后一个元素。
我遗漏了一些明显的东西,因为在我的情况下,它找不到完整路径并被[0, 11, 2, 9, 12, 1, 8, 19, 22, 13, 4, 7, 10, 17, 6, 3, 14, 23, 16]
. 知道我的错误在哪里吗?
java - 骑士之旅算法
我正在尝试编写一个有两个数组,ACCESS 和 board 的 Knights Tour 算法。ACCESS 是我用来确定下一步是什么的数组,而 board 是用户将看到的最终结果的数组。我的算法检查以找到可用移动次数最少的方格并去那里。如果碰巧有 2 个可能的移动具有相同数量的可用移动,我会找到离中心最远的移动(最靠近边界)并移动到那个位置。这个算法应该一直给出一个完美的 64 步骑士巡回赛程序,但我通常只能得到大约 60 步,谁能告诉我为什么它没有给出 64?