问题标签 [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.

0 投票
1 回答
1042 浏览

c++ - knights tour using a stack

I'm tasked with solving the Knights tour iteratively using a stack to store the previous moves so I can pop if the knight is stuck. My program seems to be making multiple POPS but doesn't seem to be ever solving the puzzle. It uses Warnsdorffs rule for the first 32 moves and then uses a stack to solve the remaining spaces.

Is there something wrong with my logic so that it never solves the puzzle?

Is this a legal move function

Here is the solve function

0 投票
2 回答
1513 浏览

java - 骑士的Java之旅(递归)

我正在为经典的骑士之旅编写代码,我的代码似乎大部分都在做正确的事情,但它仍然让我对可能的董事会“不可能”,我不知道为什么。(例如:对于从第 1 行第 3 列开始的 3 行 4 列的表,它失败了)。计算行和列时,我从索引 0 开始。我不认为它是正确的回溯。谁能帮忙指出我的错误?谢谢

0 投票
1 回答
187 浏览

algorithm - 回溯算法中操作顺序的重要性

就该特定算法的效率而言,回溯算法的每个递归步骤中的操作顺序有多重要?

对于前。

在骑士巡回赛问题中。

骑士被放置在空棋盘的第一个格子上,根据国际象棋规则走棋,他必须在每个格子里走一趟。

在每个步骤中,有 8 种可能的(通常)移动方式。

如果我改变这个顺序......

现在,对于 n=6 的 *n 板,操作顺序不会影响执行时间的任何可见变化,

但如果是 n >= 7

第一个操作(移动)订单的执行时间比后面的要少得多。在这种情况下,生成所有 O(m!) 运算顺序并测试算法是不可行的。那么我如何确定此类算法在特定移动顺序上的性能,或者更确切地说,如何才能达到一个(或一组)操作顺序,从而使算法在执行时间方面更有效。

0 投票
1 回答
546 浏览

c# - 骑士之旅算法

我是编程新手,我希望将 Knight's Tour 作为练习来解决。但我不明白我的程序的错误在哪里这是我的方法:

我不知道为什么我在这里得到重复的坐标是输出:

0 投票
1 回答
80 浏览

java - 在骑士巡回挑战中,从玩家当前所在的坐标向用户显示他们可以移动的位置

这是我在骑士巡回赛中的尝试,我在这里尝试做的是向用户展示他们可以从阵列中的任何位置做出哪些动作。

问题出现NextPos[x+1][y-2]!=null在 if 语句中,因为java.lang.ArrayIndexOutOfBoundsException: -2抛出了异常。

我知道数组在这个位置超出了界限,但这就是重点,所以它不会打印出这个位置可用。

我的问题是,有没有办法获得相同的结果*或捕获异常以使其通过?

*在 if() 中使用越界数组。

打印时数组如下所示:

xy的值为0。Board 数组与 NextPos 数组大小相同,但它是一个 int 数组。

0 投票
1 回答
187 浏览

java - 骑士巡回赛不会超过第四步

我正在使用启发式方法来编写骑士巡回赛问题的解决方案来评估潜在的移动,并选择“最困难”的移动。我遇到了一个问题,它弥补了第四步,然后不会向前或向后移动到不同的移动。最远的是:

我现在正在开发一个 5 x 5 的电路板,然后最终升级到 8 x 8。我只是想先看看它在小范围内工作。我知道有有效的动作,我只是不确定是启发式比较出了问题,还是完全是我没有看到的其他东西。

编辑:最终工作代码

感谢所有帮助,我会尽力澄清任何问我的事情。

0 投票
0 回答
116 浏览

c++ - Knight's Tour 打印出招式列表(递归)

我不是在寻找直接的答案,只是关于如何进行的一些指导。我相信我的程序可以正常工作,因为它编译和运行没有错误,但是我不完全确定,因为我无法打印出动作。对我的程序的任何其他见解表示赞赏和欢迎。非常感谢提前。

0 投票
2 回答
90 浏览

c++ - 随机函数不断得到相同的结果

我正在编写一个程序来随机模拟骑士的巡回演出。(参见维基百科了解它的含义:http ://en.wikipedia.org/wiki/Knight%27s_tour )首先,我创建了一个国际象棋对象,它基本上只是一个 8*8 数组,带有数字来指示马的位置. 我创建了一个国际象棋对象并为骑士随机分配了一个位置。然后,我随机移动骑士,直到没有更多的合法移动,并返回执行的移动次数。

}

有趣的是,虽然它从一个运行到另一个运行完全随机运行,但它在同一次运行中不断输出相同的东西。例如,这是 main() 函数:

并且在 BOTH runTour() 中它输出:(其中 0 代表未到达的位置,1 代表骑士的当前位置,到达 9 个位置)

当我再次运行它时,两个 runTour 输出:

所以随机函数在不同的运行中是随机的,但在每次运行中都是相同的。为什么会这样?如何修改代码,让 runTour() 在调用时有不同的表现?非常感谢您阅读这个笨拙的问题。

0 投票
1 回答
65 浏览

c++ - 没有初始化的变量返回分段错误

描述:你的一个朋友正在研究旅行骑士问题 (TKP),你要在其中找到最短的骑士移动封闭路径,该路径恰好访问棋盘上给定 n 个方格中的每个方格一次。他认为问题中最困难的部分是确定两个给定方格之间的最小骑士移动数,一旦完成了这一点,找到巡回赛将很容易。你当然知道反之亦然。所以你让他写一个解决“困难”部分的程序。你的工作是编写一个程序,它以两个正方形 a 和 b 作为输入,然后确定从 a 到 b 的最短路线上的骑士移动次数。

有多个测试用例。第一行包含一个整数 T,表示测试用例的数量。每个测试用例由一行组成,其中包含两个由一个空格分隔的正方形。正方形是一个字符串,由一个代表列的字母 (ah) 和代表棋盘上的行的数字 (1-8) 组成。

对于每个测试用例,打印一行“To get from xx to yy takes n knight move.”。*/

}

0 投票
1 回答
74 浏览

c++ - 使用回溯的 Code Knight 之旅未显示任何输出

这段代码没有给出任何输出。它应该输出一个 8X8 大小的矩阵。

此函数打印矩阵:

这个函数检查 x 和 y 的限制以及骑士是否已经访问过那个地方。

这个函数做了大部分的事情:

这只是一个驱动程序功能: