问题标签 [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.
prolog - 将列表从最短到最长排序
我最近拿起了序言,并正在尝试制作一个程序来为著名的拼图骑士之旅找到解决方案 [在此处找到]
使用Warnsdorff算法,我试图找到可以从棋盘上的特定位置进行的所有可能的移动,然后进行移动后可能移动最少的移动,然后重复该过程,但是我有找不到所说的动作。
到目前为止,这是我的代码
由于仅在找到所有可能移动的数量后才计算它们,因此我的列表未按我需要的方式排序。
例如这个输入
结果应该是
但是我得到
如果有人可以帮助我获得最低分数NewX
,NewY
那就太好了
c# - 骑士之旅递归
有人能找到我的错误knight's tour code
吗?我似乎找不到它,我得到一个无限循环,而不是堆栈溢出
并称它为:
我需要有一个jmp
变量,因为我正在执行多次试验并且还想显示所采用的路径。谢谢!
c - 在骑士巡回赛回溯中陷入无限循环
这段代码在我正在使用回溯解决的骑士之旅问题中陷入无限循环。我已经使用x[8] and y[8]
数组来访问可能的8
方向移动。我也形成了这些x
和y
数组与已经解决的答案相同。但是我仍然缺少一些东西,我无法理解出了什么问题。
c++ - 递归呼吸优先搜索适用于第一次执行,但不适用于执行后
CodeReview提出的解决方案在 CentOS 7.1 上运行良好。我已尝试将其移植到 Windows 7、Visual Studio 2012。稍作编辑以允许 VS 2012 不支持代码编译的 C++11 部分,并且循环的第一次执行正常工作。测试用例的其余执行失败,每次执行都越来越不正确。
这个问题的代码可以在github上找到。
在 0 完成计算 /* 这里的问题不包括在问题中 */
经过的时间:0.202012 秒
所有路径搜索的起点为 A3 所有路径搜索
的目标点为 H4
棋盘每条边上的方格数为 8
用于进一步限制搜索的切片方法是不重复访问任何行或列。
有 5 条结果路径
有 323 条尝试路径
平均路径长度为 4.8
中值路径长度为 4
最长路径为 6 步
最短路径为 4 步
我相信问题出在下面列出的文件之一中。我已经调试了2天,我可以使用一些帮助。
CRKnightMoves_Cpp2.cpp
KnightMovesImplementation.h
KnightsImplementation.cpp
KMMoveFilters.h
KMMoveFilters.cpp
c# - 用 C# 实现骑士之旅
我正在尝试在 C# 中实现 Knights Tour 问题。
我参考了这个链接中的 C++ 代码:
http://www.geeksforgeeks.org/backtracking-set-1-the-knights-tour-problem/
几个小时以来,我一直在摸不着头脑,试图弄清楚为什么我的 c# 代码(几乎与 C++ 代码相同)不会产生相同的结果。我想我实际上出于某种原因陷入了无限循环。
这是 C# 代码:
在 Main 方法中执行:
algorithm - 骑士之旅,数数从A到B的步数
骑士位于 (a,b) 位置,需要夺取位于 (c,d) 的国王。我怎样才能:
A:可视化游览
B:计算从 (a,b) 到 (c,d) 所需的最小步数
我发现的实现基本上是一个骑士在棋盘上的一系列移动,这样骑士只访问每个方格一次,但我想更具体一点,进入一个特定的位置。
我应该寻找什么样的算法或策略?
我正在考虑使用python
algorithm - 如何确定一次可以走(i,j)步的“骑士”是否可以覆盖NxN板?
通常,骑士一次移动 (1,2) 步,即向一个方向移动 1 步,向另一个方向移动 2 步。在一般版本中,它可以一次移动 (i,j) 步。
我不确定这是否是骑士之旅的问题,因为我不记得一次访问一个广场的限制。此外,答案只是是/否,我们不需要知道实际路径。
我的一个想法本质上是将棋盘点视为图形,并对所有有效的 (i,j) 移动进行深度优先搜索并将其标记为已访问。最后,如果有任何未访问的广场,那是不可能的。但是,这占用了 N^2 空间,我想知道是否有更简单的解决方案,因为这是一个是/否的问题。
java - 骑士的巡回递归没有找到解决方案
之前有人问过骑士的巡回演出,但我仍然遇到问题。我正在尝试递归访问棋盘的所有单元格,但访问次数不能超过 52 次。之后,它回溯并且访问的单元格的数量倒计时。这是我的代码:
c++ - 在 C++ 类中初始化用户定义的数组?
我正在研究骑士之旅问题,并且想定义一个类,但是在初始化用户定义的数组时遇到了麻烦。因此,用户从命令行输入的argvs
是棋盘长度 mX 和 nY;和一个起始位置(x,y)。所以基本上,我如何初始化用户定义的数组?
第一个问题:在public
部分中,声明是否正确int ** tour
?
第二个问题:如何tour
在同一个类中的以下函数中引用数组?
第三个问题: 中main
,我调用K.knight
了用户指定的维度数组进行初始化,但是没有初始化。如何在main
使用该函数时初始化一个数组K.knigt()
,并能够在下面的函数中使用该数组K.knightfunc()
?
algorithm - Haskell:如果我尝试超过 55 步,骑士之旅永远不会结束?
这是我的代码:
你知道为什么它永远不会完成吗(也许我可以再等一下......)?您是否有其他解决方案来实现相同的蛮力算法但会更快?