CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
jackfrued

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: jackfrued/Python-100-Days
Path: blob/master/公开课/文档/第06次公开课-算法入门系列2-在水一方/code/example04.py
Views: 729
1
"""
2
骑士巡逻
3
"""
4
import sys
5
6
SIZE = 8
7
8
9
def display(board):
10
"""显示棋盘"""
11
for row in board:
12
for col in row:
13
print(f'{col}'.rjust(2, '0'), end=' ')
14
print()
15
16
17
def patrol(board, i=0, j=0, step=1):
18
"""巡逻"""
19
if 0 <= i < SIZE and 0 <= j < SIZE and board[i][j] == 0:
20
board[i][j] = step
21
if step == SIZE * SIZE:
22
display(board)
23
sys.exit(0)
24
patrol(board, i + 1, j + 2, step + 1)
25
patrol(board, i + 2, j + 1, step + 1)
26
patrol(board, i + 2, j - 1, step + 1)
27
patrol(board, i + 1, j - 2, step + 1)
28
patrol(board, i - 1, j - 2, step + 1)
29
patrol(board, i - 2, j - 1, step + 1)
30
patrol(board, i - 2, j + 1, step + 1)
31
patrol(board, i - 1, j + 2, step + 1)
32
board[i][j] = 0
33
34
35
def main():
36
"""主函数"""
37
board = [[0] * SIZE for _ in range(SIZE)]
38
patrol(board)
39
40
41
if __name__ == '__main__':
42
main()
43
44