GPT答: |
7i24.cn
|
以下是使用回溯法求解4阶Latin方的Python代码:
```python
def is_valid(board, row, col, num):
# 检查当前数字是否在同一行或同一列已经出现过
for i in range(4):
if board[row][i] == num or board[i][col] == num:
return False
return True
def solve(board, row=0):
# 如果已经填满了所有格子,则找到一个解
if row == 4:
print_board(board)
return
for col in range(4):
# 如果当前格子已经填入了数字,则跳过继续下一个格子
if board[row][col] != 0:
continue
for num in range(1, 5):
if is_valid(board, row, col, num):
board[row][col] = num
solve(board, row+1) # 继续填写下一行
board[row][col] = 0 # 回溯,将当前格子重置为0
def print_board(board):
for i in range(4):
print(" ".join(str(num) for num in board[i]))
board = [[0]*4 for _ in range(4)]
board[0] = [1 ,2 ,3 ,4]
solve(board)
```
运行以上代码会输出所有第一行为1、2、3、4的所有解。每个解的第2行到第四行的数字从左到右组成一个序列。
|