码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 37. Sudoku Solver

时间:2019-12-15 16:48:39      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:str   pre   rac   javascrip   floor   code   mat   UNC   OLE   

好难,没几个月就忘记了

function solveSudoku(board) {
      var result = []
      function backtrack(x, y) {
        if (x == 9) { //打印所有
          board.forEach(function (row) {
            result.push(row.concat())
          })
          return true
        } else {

          if (board[x][y] == '.') {
            for (var i = 1; i <= 9; i++) {//尝试在格子里面填入1-9
              if (check(board, x, y, i + '')) {
                board[x][y] = i + "" //处理掉0
                if (backtrack((y == 8 ? x + 1 : x), (y == 8 ? 0 : y + 1))) {
                  return true
                }
              }
            }
            board[x][y] = '.';
          } else {
            if (backtrack((y == 8 ? x + 1 : x), (y == 8 ? 0 : y + 1))) {
              return true
            }
          }
        }

      }
      function check(board, x, y, k) {
        for (var i = 0; i < 9; i++) {
          //我们想在board[x][y] 中填入k, 结果在board[x][i] 或 board[i][y] 出现相同的k
          if (board[x][i] == k || board[i][y] == k) {
            return false;
          }
        }
        //检查九宫格
        var xx = Math.floor(x / 3)
        var yy = Math.floor(y / 3)
        for (var i = xx * 3; i < (xx + 1) * 3; i++) {
          for (var j = yy * 3; j < (yy + 1) * 3; j++) {
            if (board[i][j] == k) {
              return false;
            }
          }
        }
        return true;
      }
      backtrack(0, 0)
      // console.log(JSON.stringify(result))
      return result;
    }

leetcode 37. Sudoku Solver

标签:str   pre   rac   javascrip   floor   code   mat   UNC   OLE   

原文地址:https://www.cnblogs.com/rubylouvre/p/12044346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!