zoukankan      html  css  js  c++  java
  • [Leetcode] 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.

    暴力DFS!

     1 class Solution {
     2 public:
     3     bool isValid(vector<vector<char> > &board, int a, int b) {
     4         for (int i = 0; i < 9; ++i) {
     5             if (i != a && board[i][b] == board[a][b])
     6                 return false;
     7         }
     8         for (int j = 0; j < 9; ++j) {
     9             if (j != b && board[a][j] == board[a][b])
    10                 return false;
    11         }
    12         int x = a / 3 * 3, y = b / 3 * 3;
    13         for (int i = 0; i < 3; ++i) {
    14             for (int j = 0; j < 3; ++j) {
    15                 if (x + i != a && y + j != b && board[x + i][y + j] == board[a][b])
    16                     return false;
    17             }
    18         }
    19         return true;
    20     }
    21     
    22     bool solveHelper(vector<vector<char> > &board) {
    23         for (int i = 0; i < 9; ++i) {
    24             for (int j = 0; j < 9; ++j) {
    25                 if (board[i][j] == '.') {
    26                     for (int k = 1; k <= 9; ++k) {
    27                         board[i][j] = '0' + k;
    28                         if (isValid(board, i, j) && solveHelper(board)) {
    29                             return true;
    30                         }
    31                         board[i][j] = '.';
    32                     }
    33                     return false;
    34                 }
    35             }
    36         }
    37         return true;
    38     }
    39     
    40     void solveSudoku(vector<vector<char> > &board) {
    41         solveHelper(board);
    42     }
    43 };
  • 相关阅读:
    PLC 输入输出接线示意图
    光耦的使用
    windows server 2008R2 搭建FTP服务器的步骤:
    C# semaphore的使用
    Multisim模拟 达灵顿管,防反接电路,恒流源电路
    一些芯片资料
    220V交流转5V直流电路详细
    STM32中的模拟IIC使用
    基于C8T6的DA14580蓝牙方案
    基本元件实验:继电器
  • 原文地址:https://www.cnblogs.com/easonliu/p/3662904.html
Copyright © 2011-2022 走看看