1. var solveSudoku = function (board) {
    2. for (let row = 0; row < 9; row++) {
    3. for (let col = 0; col < 9; col++) {
    4. if (board[row][col] !== '.') continue
    5. for (let num = 1; num < 10; num++) {
    6. const isSet = cheackSet(row, col, board, num + '')
    7. if (!isSet) continue
    8. board[row][col] = num + ''
    9. // 判断是否能继续进行
    10. if (solveSudoku(board)) return true
    11. // 回退
    12. board[row][col] = '.'
    13. }
    14. // 当前格子没有不符合的,则回退
    15. return false
    16. }
    17. }
    18. return true
    19. };
    20. // 检查是否满足题意
    21. function cheackSet(row, col, board, num) {
    22. for (let i = 0; i < 9; i++) {
    23. if (board[i][col] === num || board[row][i] === num) {
    24. return false
    25. }
    26. }
    27. return checkIn33(row, col, board, num)
    28. }
    29. function checkIn33(row, col, board, num) {
    30. const x = Math.floor(row / 3) * 3
    31. const y = Math.floor(col / 3) * 3
    32. for (let i = x; i < x + 3; i++) {
    33. for (let j = y; j < y + 3; j++) {
    34. if (board[i][j] === num) {
    35. return false
    36. }
    37. }
    38. }
    39. return true
    40. }