zoukankan      html  css  js  c++  java
  • [LeetCode] Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

    The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

    A partially filled sudoku which is valid.

    Note:
    A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

    分析:行、列、3x3 box 分布check

     1 class Solution {
     2     public:
     3         bool m_used[9];
     4         bool isValidSudoku(const vector<vector<char>>& board) {
     5 
     6             // check the row
     7             for (int i = 0; i < 9; ++i) {
     8                 fill(m_used, m_used + 9, false);
     9                 for (int j = 0; j < 9; ++j)
    10                 {
    11                     if (!check(board[i][j]))
    12                         return false;
    13                     m_used[board[i][j] - '1'] = true;
    14                 }
    15             }
    16 
    17             // check the column
    18             for (int i = 0; i < 9; ++i) {
    19                 fill(m_used, m_used + 9, false);
    20                 for (int j = 0; j < 9; ++j)
    21                 {   
    22                     if (!check(board[j][i]))
    23                         return false;
    24                     m_used[board[j][i] - '1'] = true;
    25                 }   
    26             }   
    27 
    28             // check the 3x3 box
    29             for (int r = 0; r < 3; ++r)
    30                 for( int c = 0; c < 3; ++c)
    31                 {
    32                     fill(m_used, m_used + 9, false);
    33                     for (int i = r * 3; i < r * 3 + 3; ++i)
    34                         for (int j = c * 3; j < c * 3 + 3; ++j)
    35                         {
    36                             if (!check(board[i][j]))
    37                                 return false;
    38                             m_used[board[i][j] - '1'] = true;
    39                         }
    40                 }
    41         return true;
    42         }
    43         bool check(char ch) {
    44             if (ch == '.') return true;
    45             if (m_used[ch - '1'] == true)
    46                 return false;
    47             else
    48                 return true;
    49         }
    50 };
  • 相关阅读:
    软件测试面试题及答案【史上最全】
    Loadrunner参数(摘)
    Linux系统的目录结构
    关于梦想(七)
    Mysql基于Linux上的安装
    走进MySQL
    关于梦想(六)
    Jmeter的实例应用
    十种社会中最真实的人际关系
    有些人走了就走了,该在的还在就好
  • 原文地址:https://www.cnblogs.com/diegodu/p/3808368.html
Copyright © 2011-2022 走看看