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.

题意描述:判断矩阵是否是一个数独矩阵。所谓的数独矩阵就是9*9的矩阵,每一行一个元素只出现一次、每一列一个元素只出现一次,并且在任意一个小矩阵中一个元素只出现一次(所说的元素指0-9这九个数字)。

解题分析:注意题目中说的是只要当前已经填充的数字是合法的就可以,不一定要这个数独是有解的。依次判断已给定的矩阵每一行、每一列、以及每个小矩阵上是否是有重复数字即可;

实现代码:

              class Solution {
public:
    bool isValidSudoku(vector<vector<char> > &board) {
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                if(board[i][j]!='.')
                {
                    if(!isvalid(board,i,j))  return false;
                }
            }
        }
        return true;
    }
    bool isvalid(vector<vector<char>> &board,int i,int j)
     {
         for (int k = 0; k < 9; k++)  //遍历每一列,判断有重复
         {
             if (k != j && board[i][j] == board[i][k]) return false;
         }
         for (int k = 0; k < 9; k++)  //遍历每一行,判断有重复
         {
             if (k != i && board[i][j] == board[k][j]) return false;
         }
         for (int row = i / 3 * 3; row < i / 3 * 3 + 3; row++)//遍历(i,j)所在的小九宫格,判断有重复
         {
             for (int col = j / 3 * 3; col < j / 3 * 3 + 3; col++)
             {
                 if ((row != i || col != j) && board[i][j] == board[row][col])
                     return false;
             }
         }
         return true;
    }
};


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭