以下是一个简单的九宫数独程序实现:\n\npython\ndef is_valid(board, row, col, num):\n # 检查同一行是否有重复数字\n for i in range(9):\n if board[row][i] == num:\n return False\n \n # 检查同一列是否有重复数字\n for j in range(9):\n if board[j][col] == num:\n return False\n \n # 检查同一个3x3宫格是否有重复数字\n start_row = (row // 3) * 3\n start_col = (col // 3) * 3\n for i in range(3):\n for j in range(3):\n if board[start_row + i][start_col + j] == num:\n return False\n \n return True\n\ndef solve_sudoku(board):\n for row in range(9):\n for col in range(9):\n if board[row][col] == '.':\n for num in range(1, 10):\n if is_valid(board, row, col, str(num)):\n board[row][col] = str(num)\n if solve_sudoku(board):\n return True\n board[row][col] = '.' # 回溯\n return False\n return True\n\ndef print_board(board):\n for row in board:\n print(' '.join(row))\n\nboard = [\n ['5', '3', '.', '.', '7', '.', '.', '.', '.'],\n ['6', '.', '.', '1', '9', '5', '.', '.', '.'],\n ['.', '9', '8', '.', '.', '.', '.', '6', '.'],\n ['8', '.', '.', '.', '6', '.', '.', '.', '3'],\n ['4', '.', '.', '8', '.', '3', '.', '.', '1'],\n ['7', '.', '.', '.', '2', '.', '.', '.', '6'],\n ['.', '6', '.', '.', '.', '.', '2', '8', '.'],\n ['.', '.', '.', '4', '1', '9', '.', '.', '5'],\n ['.', '.', '.', '.', '8', '.', '.', '7', '9']\n]\n\nif solve_sudoku(board):\n print_board(board)\nelse:\n print("No solution exists.")\n\n\n这个程序使用递归方法解决九宫数独问题。它首先遍历整个九宫格,找到一个空格(用'.'表示),然后尝试填入一个数字。如果填入的数字在当前位置是合法的,程序会进入下一层递归,继续填写下一个空格。如果在某个位置无法填入合法的数字,程序会回溯到上一个位置重新尝试其他数字。直到所有的空格都被填满,或者无法找到合法的解决方案。\n\n运行以上代码,程序将输出九宫数独的解答。如果数独问题没有解决方案,程序将输出"No solution exists."。


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

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