Hard-题目24:37. Sudoku Solver

原创 2016年05月31日 23:36:28

题目原文:
Write a program to solve a Sudoku puzzle by filling the empty cells.

Empty cells are indicated by the character ‘.’.

You may assume that there will be only one unique solution.
题目大意:
写一个程序求标准数独。
题目分析:
注意是有返回值的dfs(如果有解或者解完了,则向下搜),没什么多说的。注意语言特性,要写C++而不是Java,因为Java是传值调用,那个棋盘传进下一层就不能带出来了。
源码:(language:cpp)

class Solution {
public:
    void solveSudoku(vector<vector<char>>& board) {
        backtrack(board, 0, 0);
    }
    bool backtrack(vector<vector<char>>& board, int row, int col){
        if(row == 9)
            return true;
        if(col == 9)
            return backtrack(board, row+1, 0);
        if(board[row][col] != '.')
            return backtrack(board, row, col+1);
        for(char i='1'; i<='9'; i++){
            if(isValid(board, row, col, i)){
                board[row][col] = i;
                if(backtrack(board, row, col+1))
                    return true;
                board[row][col] = '.';
            }
        }
        return false;
    }
    bool isValid(vector<vector<char>>& board, int row, int col, char k){
        for(int i=0; i<9; i++){
            if(board[i][col] == k)
                return false;
            if(board[row][i] == k)
                return false;
        }
        for(int i=(row/3)*3; i<(row/3)*3+3; i++){
            for(int j=(col/3)*3; j<(col/3)*3+3; j++){
                if(board[i][j] == k)
                    return false;
            }
        }
        return true;
    }
};

成绩:
40ms,beats 66.04%,4ms,9.81%

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

LeetCode 37 Sudoku Solver (C,C++,Java,Python)

Problem: Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells ar...
  • runningtortoises
  • runningtortoises
  • 2015年05月19日 13:11
  • 2048

Leetcode 37 Sudoku Solver

做了这道题,对backtracking的理解又加深了一点点。 1 每个backtracking的题目,最好都有独立判断isValid的程序,这样架构清楚。同时,valid判断函数在这里可以稍微研究一...
  • zxzxy1988
  • zxzxy1988
  • 2013年02月17日 21:53
  • 7784

37. Sudoku Solver Leetcode Python

Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by...
  • hyperbolechi
  • hyperbolechi
  • 2015年03月27日 04:58
  • 1764

LeetCode(37) Sudoku Solver

题目如下: Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated...
  • feliciafay
  • feliciafay
  • 2015年03月23日 07:55
  • 926

LeetCode题目:37. Sudoku Solver

LeetCode题目:37. Sudoku Solver 原题链接:https://leetcode.com/problems/sudoku-solver/description/ 解题思路:(现...
  • MyCodecOdecoDecodE
  • MyCodecOdecoDecodE
  • 2017年10月22日 22:57
  • 52

LeetCode: Sudoku Solver

思路:(借助网上的讨论)因为题目保证只有一个
  • AIvin24
  • AIvin24
  • 2014年06月22日 18:52
  • 1882

Sudoku Solver -- LeetCode

原题链接: http://oj.leetcode.com/problems/sudoku-solver/  这道题的方法就是用在N-Queens中介绍的常见套路。简单地说思路就是循环处理子问题,对于...
  • linhuanmars
  • linhuanmars
  • 2014年03月10日 03:56
  • 20344

【LeetCode】37. Sudoku Solver

http://www.cnblogs.com/ganganloveu/p/3828401.htmlSudoku SolverWrite a program to solve a Sudoku puzz...
  • u012768474
  • u012768474
  • 2017年07月28日 13:11
  • 93

LEETCODE 37. Sudoku Solver

题目大意是leetcode36的进阶版,要解出数独的答案 解题思路就是用递归,无奈太渣,弄错了边界条件,而且思路还不够清晰,递归函数返回类型一开始写成void了,导致board里面的内容总是被清空,...
  • chenyaxue
  • chenyaxue
  • 2017年06月04日 23:02
  • 121

leetcode 37. Sudoku Solver

1.题目 Write a program to solve a Sudoku puzz...
  • csdn_lisword
  • csdn_lisword
  • 2016年04月13日 15:15
  • 160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hard-题目24:37. Sudoku Solver
举报原因:
原因补充:

(最多只允许输入30个字)