zoukankan      html  css  js  c++  java
  • LeetCode OJ: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     void solveSudoku(vector<vector<char>>& board) {
     4         doSudoku(board);
     5     }
     6 
     7     bool checkValid(vector<vector<char>>&board, int x, int y)
     8     {
     9         for(int i = 0; i < 9; i++){
    10             if(i!=x)
    11                 if(board[i][y] == board[x][y]) return false;
    12         }
    13 
    14         for(int j = 0; j < 9; j++){
    15             if(j != y)
    16                 if(board[x][j] == board[x][y]) return false;
    17         }
    18 
    19         for(int i = (x/3) * 3; i < (x/3 + 1) * 3; ++i){
    20             for(int j = (y/3) * 3; j < (y/3 + 1) * 3; ++j){
    21                 if((i!=x) || (j != y))
    22                     if(board[x][y] == board[i][j]) return false;
    23             }
    24         }
    25         return true;
    26     }
    27 
    28     bool doSudoku(vector<vector<char>> & board)
    29     {
    30         for(int row = 0; row < 9; ++row){
    31             for(int col = 0; col < 9; ++col){
    32                 if(board[row][col] == '.'){
    33                     for(int i = 1; i <= 9; ++i){
    34                         board[row][col] = '0' + i;
    35                         if(checkValid(board, row, col)){
    36                             if(doSudoku(board)){
    37                                 return true;
    38                             }
    39                         }    
    40                         board[row][col] = '.';
    41                     }
    42                     return false;
    43                 }
    44             }
    45         }
    46         return true;
    47     }
    48 };
  • 相关阅读:
    ny2 括号配对问题
    ny14 会场安排问题
    杭电ACM题目分类
    hdoj2037 今年暑假不AC
    ny37 回文字符串
    算法 字符串的排列组合
    手撸IoC
    Java设计模式
    多种方法求java求整数的位数
    二叉树之 二叉树深度
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4986023.html
Copyright © 2011-2022 走看看