数独程序可以使用多种编程语言实现,包括Python、C++等。下面我将提供一个使用Python编写的数独求解器的示例代码,以及一个使用C++编写的数独求解器的示例代码。
Python数独求解器示例
```python
def is_valid(board, row, col, num):
检查行是否重复
for x in range(9):
if board[row][x] == num:
return False
检查列是否重复
for x in range(9):
if board[x][col] == num:
return False
检查3x3宫格是否重复
start_row, start_col = 3 * (row // 3), 3 * (col // 3)
for i in range(3):
for j in range(3):
if board[i + start_row][j + start_col] == num:
return False
return True
def solve_sudoku(board):
for row in range(9):
for col in range(9):
if board[row][col] == 0: 找到空格
for num in range(1, 10):
if is_valid(board, row, col, num):
board[row][col] = num 尝试填入数字
if solve_sudoku(board): 递归解决下一个空格
return True
board[row][col] = 0 回溯
return False 无法解决,返回False
return True 所有空格都填满,返回True
示例数独棋盘
sudoku_board = [
[5, 3, 4, 6, 7, 8, 9, 1, 2],
[6, 7, 2, 1, 9, 5, 3, 4, 8],
[1, 9, 8, 3, 4, 2, 5, 6, 7],
[8, 5, 9, 7, 6, 1, 4, 2, 3],
[4, 2, 6, 8, 5, 3, 7, 9, 1],
[7, 1, 3, 9, 2, 4, 8, 5, 6],
[9, 6, 1, 5, 3, 7, 2, 8, 4],
[2, 8, 7, 4, 1, 9, 6, 3, 5],
[3, 4, 5, 2, 8, 6, 1, 7, 9]
]
if solve_sudoku(sudoku_board):
for row in sudoku_board:
print(row)
else:
print("无解!")
```
C++数独求解器示例