问题描述
问题说明: 给定一个 N*N 的棋盘,骑士被放置在一个空棋盘的第一个方块上。按照国际象棋骑士的规则移动必须恰好访问每个方格一次。打印访问它们的每个单元格的顺序。
Example:
Input :
N = 8
Output:
0 59 38 33 30 17 8 63
37 34 31 60 9 62 29 16
58 1 36 39 32 27 18 7
35 48 41 26 61 10 15 28
42 57 2 49 40 23 6 19
47 50 45 54 25 20 11 14
56 43 52 3 22 13 24 5
51 46 55 44 53 4 21 12
我的代码:
def knightTravels(i,j,count,n,mat):
if count == n**2:
for list1 in mat:
print(mat)
print("====================")
return
if i < 0 or j < 0 or i >= n or j >= n:
return
if mat[i][j] != 0:
return
mat[i][j] = count
knightTravels(i-2,j-1,count+1,mat) # check
knightTravels(i-2,j+1,mat) # check
knightTravels(i-1,j-2,mat) # check
knightTravels(i+1,mat) # check
knightTravels(i+2,j+2,mat) # check
mat[i][j] = 0
def knightTour(n):
mat = []
for x in range(n):
list1 = []
for y in range(n):
list1.append(0)
mat.append(list1)
i = j = count = 0
knightTravels(i,mat)
knightTour(8)
问题: 代码正在抛出 TLE,我使用回溯的方式与我们在迷宫问题中解决老鼠的方式相同。我的代码有什么问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)