leetcode数组之Valid Sudoku

来源:互联网 发布:hitleap类似的软件 编辑:程序博客网 时间:2024/05/19 05:30
描述:
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules
http://sudoku.com.au/TheRules.aspx .
The Sudoku board could be partially filled, where empty cells are filled with the character '.'.
 

【题意】:即判断一个数独是否有解

假设一个数独是有效的,则它符合数独游戏 规则。

数独游戏 规则:

(1)每一行都必须1-9的范围内,且只出现一次。

2)每一列都必须在1-9的范围内,且只出现一次。

3)数字1-9在每个子宫格中只出现一次。

数独宫格可以部分填充,其中空单元格都充满了字符'.'。

//(1)检查行//(2)检查列//(3)检查9个子宫格  class Solution {public:    bool isValidSudoku(vector<vector<char>> &board){    bool used[9];    for(int i=0;i<9;i++)    {        fill(used,used+9,false); //检查行;        for(int j=0;j<9;j++)        {            if(!check(board[i][j],used))                 return false;        }        fill(used,used+9,false); //检查列;            for(int j=0;j<9;j++)                  {                if(!check(board[j][i],used))                    return false;            }    }    for(int row=0;row<3;row++)   //检查9个子宫格    {        for(int col=0;col<3;col++)        {            fill(used,used+9,false);            for(int i=row*3;i<row*3+3;i++)            {                for(int j=col*3;j<col*3+3;j++)                {                    if(!check(board[i][j],used))                        return false;                }            }        }    }    return true;}private:bool check(char ch,bool used[9]){    if(ch=='.')        return true;    if(used[ch-'1'])        return false;   //字符ch已用过    else    {        used[ch-'1']=true;//字符ch未用过        return true;    }}};



0 0