1. 程式人生 > >LeetCode-36. 有效的數獨

LeetCode-36. 有效的數獨

題目地址:https://leetcode-cn.com/problems/valid-sudoku/
思路:暴力
AC程式碼:

class Solution {
public:
    bool isValidSudoku(vector<vector<char>>& board) {
        // 行
        for(int i=0;i<9;i++){
            bool flag[10];
            memset(flag,false,sizeof(flag));
            for(int j=0;j<9;j++){
                int now = board[i][j] - '0';
                if(now<0 || now>9)
                    continue;
                if(flag[now])
                    return false;
                flag[now] = true;
            }
        }
        //列
        for(int i=0;i<9;i++){
            bool flag[10];
            memset(flag,false,sizeof(flag));
            for(int j=0;j<9;j++){
                int now = board[j][i] - '0';
                  if(now<0 || now>9)
                    continue;
                if(flag[now])
                    return false;
                flag[now] = true;
            }
        }
        //九宮格
        int xx[10] = {0,0,0,1,1,1,2,2,2};
        int yy[10] = {0,1,2,0,1,2,0,1,2};
        for(int i=0;i<=6;i+=3){
            for(int j=0;j<=6;j+=3){
                bool flag[10];
                memset(flag,false,sizeof(flag));
                for(int k = 0;k<9;k++){
                    int now = board[i+xx[k]][j+yy[k]]-'0';
                      if(now<0 || now>9)
                    continue;
                     if(flag[now])
                    return false;
                flag[now] = true;
                }
            }
        }
        return true;
    }
};