我正在尝试写一个骑士之旅算法,它有两个数组,ACCESS和board。ACCESS是我用来确定下一步是什么的数组,而board是用户将作为最终结果的数组。我的算法检查用最少的可用移动数找到正方形,然后去那里。如果有两个可能的移动与相同数量的可用移动,我发现哪一个是最远离中心(最接近的边界),并移动到那个地点。这个算法应该给出一个完美的64移动骑士巡回赛程序,但我通常只得到大约60次移动,有人能告诉我为什么它不给64吗?import java.io.*;
class KnightsTour
目前,我有一个骑士的旅游算法,这是可行的。
Checks to see if the board is solved (all squares visited) else proceed:
Sort the set based on the number of moves available from those positions.
Go through
骑士巡回赛是一个基于回溯的问题。在正常版本中,您有一个N*N棋盘,您必须访问棋盘上的每一个领域与您的骑士。但真正的问题来了:我只能访问每一个领域一次!因此,如果我没有更多的领域可访问,我必须回溯。在游戏结束时,字段的数量应该等于移动的数量。现在转到我的不同版本:我不是在使用N*N棋盘,而是使用一个不规则的棋盘。例如:第一行有5个字段,第二个字段有3个,第三个字段有8个。这些信息是由一个布尔数组提供的。还有一些“假”字段是不允许访问的。我不允许改变布尔数组。 for (in