zoukankan      html  css  js  c++  java
  • leetcde37. Sudoku Solver

    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.

    A sudoku puzzle...

    ...and its solution numbers marked in red.

    class Solution {
    private:
        bool isValidSudoku(vector<vector<char>> & board, int row, int col,
                char val) {
            int N = board.size();
    
            for (int i = 0; i < N; i++) {
                if (board[row][i] == val)
                    return false;
            }
    
            for (int i = 0; i < N; i++) {
                if (board[i][col] == val)
                    return false;
            }
    
            int r = row / 3 * 3;
            int c = col / 3 * 3;
            for (int i = r; i < r + 3; i++) {
                for (int j = c; j < c + 3; j++) {
                    if (board[i][j] == val)
                        return false;
                }
            }
            return true;
        }
        bool solveSudoku(vector<vector<char>>& board, int row, int col) {
    
            int N = board.size();
            if (row == N) return true;
            if (col == N) return solveSudoku(board, row + 1, 0);
            if (board[row][col] != '.')
                return solveSudoku(board, row, col + 1);
    
            for (char k = '1'; k <= '9'; k++) {
                if (!isValidSudoku(board, row, col, k))
                    continue;
                board[row][col] = k;
                if(solveSudoku(board, row, col + 1))
                    return true;
                board[row][col] = '.';
            }
            return false;
        }
    
    public:
        void solveSudoku(vector<vector<char>>& board) {
            solveSudoku(board, 0, 0);
        }
    };
  • 相关阅读:
    20200924-3 单元测试,结对
    20200924-1 每周例行报告
    20200924-5 四则运算试题生成,结对
    20200924-2 功能测试
    20200924-4 代码规范,结对要求
    20200929-git地址
    20200917-1 每周例行报告
    20200917-2 词频统计
    20200917-3 白名单
    20200910-2 博客作业
  • 原文地址:https://www.cnblogs.com/wxquare/p/6030701.html
Copyright © 2011-2022 走看看