以下是一个简单的九宫数独程序实现:

def is_valid(board, row, col, num):
    # 检查同一行是否有重复数字
    for i in range(9):
        if board[row][i] == num:
            return False
    
    # 检查同一列是否有重复数字
    for j in range(9):
        if board[j][col] == num:
            return False
    
    # 检查同一个3x3宫格是否有重复数字
    start_row = (row // 3) * 3
    start_col = (col // 3) * 3
    for i in range(3):
        for j in range(3):
            if board[start_row + i][start_col + j] == num:
                return False
    
    return True

def solve_sudoku(board):
    for row in range(9):
        for col in range(9):
            if board[row][col] == '.':
                for num in range(1, 10):
                    if is_valid(board, row, col, str(num)):
                        board[row][col] = str(num)
                        if solve_sudoku(board):
                            return True
                        board[row][col] = '.'  # 回溯
                return False
    return True

def print_board(board):
    for row in board:
        print(' '.join(row))

board = [
    ['5', '3', '.', '.', '7', '.', '.', '.', '.'],
    ['6', '.', '.', '1', '9', '5', '.', '.', '.'],
    ['.', '9', '8', '.', '.', '.', '.', '6', '.'],
    ['8', '.', '.', '.', '6', '.', '.', '.', '3'],
    ['4', '.', '.', '8', '.', '3', '.', '.', '1'],
    ['7', '.', '.', '.', '2', '.', '.', '.', '6'],
    ['.', '6', '.', '.', '.', '.', '2', '8', '.'],
    ['.', '.', '.', '4', '1', '9', '.', '.', '5'],
    ['.', '.', '.', '.', '8', '.', '.', '7', '9']
]

if solve_sudoku(board):
    print_board(board)
else:
    print("No solution exists.")

这个程序使用递归方法解决九宫数独问题。它首先遍历整个九宫格,找到一个空格(用'.'表示),然后尝试填入一个数字。如果填入的数字在当前位置是合法的,程序会进入下一层递归,继续填写下一个空格。如果在某个位置无法填入合法的数字,程序会回溯到上一个位置重新尝试其他数字。直到所有的空格都被填满,或者无法找到合法的解决方案。

运行以上代码,程序将输出九宫数独的解答。如果数独问题没有解决方案,程序将输出"No solution exists."

写一个骨灰级九宫数独程序

原文地址: https://www.cveoy.top/t/topic/h40O 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录