微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

超出骑士巡回赛时间限制

如何解决超出骑士巡回赛时间限制

问题说明: 给定一个 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 举报,一经查实,本站将立刻删除。