Leetcode 数独

1.验证数独

class Solution {
public:
int hash[9];
    bool isValidSudoku(vector<vector<char> > &board) 
    {
       for(int i=0;i<9;i++)
       {
           if(isvalidRow(i,board)==false)return false;
       }
       for(int i=0;i<9;i++)
       {
           if(isvalidCol(i,board)==false)return false;
       } 
        for(int i=0;i<9;i=i+3)
       {
           for(int j=0;j<9;j=j+3)
           if(isvalidMatrix(i,j,board)==false)return false;
       } 
       return true; 
    }
    bool isvalidRow(int a,vector<vector<char> > &board)
    {
        memset(hash,0,sizeof(hash));
        for(int i=0;i<9;i++)
        {
            if(board[a][i]!='.')hash[board[a][i]-'0'-1]++;        
        }
        for(int i=0;i<9;i++)
        {
            if(hash[i]>=2)return false;
        }
        return true;
    }
    bool isvalidCol(int a,vector<vector<char> > &board)
    {
        memset(hash,0,sizeof(hash));
        for(int i=0;i<9;i++)
        {
            if(board[i][a]!='.')hash[board[i][a]-'0'-1]++;        
        }
        for(int i=0;i<9;i++)
        {
            if(hash[i]>=2)return false;
        }
        return true;
    }
    bool isvalidMatrix(int a,int b,vector<vector<char> > &board)
    {
        memset(hash,0,sizeof(hash));
        for(int i=a;i<a+3;i++)
        {
            for(int j=b;j<b+3;j++)
            {
                if(board[i][j]!='.')hash[board[i][j]-'0'-1]++;
            }
        }
        for(int i=0;i<9;i++)
        {
            if(hash[i]>=2)return false;
        }
        return true;
    }
};

 

posted @ 2013-06-14 18:33  代码改变未来  阅读(282)  评论(0编辑  收藏  举报