131_leetcode_Valid Sudoku

来源:互联网 发布:搜狗浏览器网络收藏夹 编辑:程序博客网 时间:2024/06/04 18:38

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.

1:注意特殊情况;2:遍历每一个非空的cell,检测当前行或者当前列,或者所在的小正方形中是不是满足数独的条件,如果不满足,直接返回false。遍历所有的结果都满足的话,返回true

    bool isValidSudoku(vector<vector<char> > &board)    {        if(board.size() != 9 || board[0].size() != 9)        {            return false;        }                int rows = (int)board.size();        int columns = (int)board[0].size();                for(int i = 0; i < rows; i++)        {            for(int j = 0; j < columns; j++)            {                if(board[i][j] == '.')                {                    continue;                }                else                {                    if(isValidSudokuCore(board, i, j))                    {                        continue;                    }                    else                    {                        return false;                    }                }            }        }        return true;    }        bool isValidSudokuCore(vector<vector<char> > &board, int curX, int curY)    {        for(int i = 0; i < (int)board.size(); i++)        {            if(i != curX && board[i][curY] !='.' && board[i][curY] == board[curX][curY])            {                return false;            }        }                for(int i = 0; i < (int)board[0].size(); i++)        {            if(i != curY && board[curX][i] != '.' && board[curX][i] == board[curX][curY])            {                return false;            }        }                int rows = curX / 3;        int columns = curY / 3;                for(int i = 0; i < 3; i++)        {            for(int j = 0; j < 3; j++)            {                if((rows * 3 + i != curX || columns * 3 + j != curY) && board[rows * 3 + i][columns * 3 + j] != '.' && board[rows * 3 + i][columns * 3 + j] == board[curX][curY])                {                    return false;                }            }        }                return true;    }


0 0
原创粉丝点击