超出骑士巡回赛时间限制

问题描述

问题说明: 给定一个 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 (将#修改为@)