我的骑士的巡回代码花了很长时间才能生成输出,但是直到达到第61步为止,它似乎运行良好。是什么问题导致此代码运行缓慢且效率低下?这段代码对于5 * 5,6 * 6可以正常工作,但是当我尝试使用7 * 7或更高版本的代码时,它的运行速度会变慢。需要做哪些改进才能使其尽快运行而无需等待很长的时间8*8
?
def isSafe(x,y,array):
return x>=0 and x<8 and y>=0 and y<8 and array[x][y]==-1
def knightsTour(x,y,moveI,x_move,y_move,solution):
if moveI==65:
return True
#try out all different configuration
for k in range(8):
x_value= x + x_move[k]
y_value = y + y_move[k]
for x1 in range(8):
print(solution[x1])
print()
if isSafe(x_value,y_value,solution):
solution[x_value][y_value] = moveI
if knightsTour(x_value,y_value,moveI+1,x_move,y_move,solution) is True:
return True
else:
solution[x_value][y_value]=-1
return False
x_move=[ 2, 1, -1, -2, -2, -1, 1, 2 ]
y_move=[1, 2, 2, 1, -1, -2, -2, -1]
solution = [[-1 for x in range(8)] for x in range(8)]
solution[0][0]=1
knightsTour(0,0,2,x_move,y_move,solution)