|
发表于 2023-4-1 16:38:13
|
显示全部楼层
本楼为最佳答案
现在好了,nx ny 搞反了:
-
- d = [[1, 0], [-1, 0], [0, -1], [0, 1]]
- l_rem = [-1, 1, 1, 3, 3, 4, 5, 6] # 列剩余
- r_rem = [-1, 5, 3, 5, 1, 3, 2, 4] # 行剩余
- vis = [[0 for i in range(8)] for i in range(8)]
- vis[1][1] = 1
- l_rem[1] -= 1
- r_rem[1] -= 1
- def solve(x, y):
- if x == 7 and y == 7:
- ok = 1
- for i in range(1, 8):
- if l_rem[i] != 0 or r_rem[i] != 0:
- ok = 0
- break
- if ok == 1:
- for i in range(1, 8):
- for j in range(1, 8):
- print(vis[i][j], end = " ")
- print()
- exit(0)
- for i in d:
- nx = x + i[0]
- ny = y + i[1]
- if nx >= 1 and nx <= 7 and ny >= 1 and ny <= 7 and vis[nx][ny] == 0:
- if l_rem[ny] >= 0 and r_rem[nx] >= 0:
- l_rem[ny] -= 1
- r_rem[nx] -= 1
- vis[nx][ny] = 1
- solve(nx, ny)
- l_rem[ny] += 1
- r_rem[nx] += 1
- vis[nx][ny] = 0
- solve(1, 1)
复制代码
最后输出:
- 1 1 1 0 0 1 1
- 0 0 1 0 0 1 1
- 0 0 1 1 1 1 1
- 0 0 0 0 0 0 1
- 0 0 0 0 1 1 1
- 0 0 0 1 1 0 0
- 0 0 0 1 1 1 1
复制代码
这样一来,具体怎么走也就很简单了 |
|