LeetCode 36. Valid Sudoku

题目

class Solution {
public:
    int tag[10];
    bool isValidSudoku(vector<vector<char>>& board) {
        
        for(int i=0;i<9;i++)
        {
            memset(tag,0,sizeof(tag));
            for(int j=0;j<9;j++)
            {
                if(board[i][j]=='.') continue;
                int x = board[i][j]-'0';
                
                if(tag[x]==1)
                    return false;
                
                tag[x]=1;
            }
            
            memset(tag,0,sizeof(tag));
            for(int j=0;j<9;j++)
            {
                if(board[j][i]=='.') continue;
                int x = board[j][i]-'0';
                
                if(tag[x]==1)
                    return false;
                
                tag[x]=1;
            }
        }
        
        memset(tag,0,sizeof(tag));
        
        for(int p=0;p<3;p++){
        
        for(int i=0;i<3;i++)
        {
            memset(tag,0,sizeof(tag));
            for(int j=i*3;j<3+i*3;j++)
            {
                for(int k=p*3;k<3+p*3;k++)
                {
                    if(board[j][k]=='.') continue;
                    int x = board[j][k]-'0';
                
                    if(tag[x]==1)
                        return false;
                
                    tag[x]=1;
                }
            }
        }
        }
        
        return true;
        
    }
};
原文地址:https://www.cnblogs.com/dacc123/p/11243223.html