36. 有效的数独

#include <vector>
#include <iostream>
#include <string.h>
using namespace std;
class Solution {
public:
    Solution(){}
    ~Solution(){}
    bool isValidSudoku(vector<vector<char>>& board) {
        //表示第n行第几个数
        int rol[9][9];
        //表示第n列第几个数
        int row[9][9];
        //表示第n个九宫格第几个数
        int group[3][3][9];
        int temp;
        memset(rol,0,sizeof(rol));
        memset(row,0,sizeof(row));
        memset(group,0,sizeof(group));
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                if (board[i][j]!='.')
                {
                    //1-9数字只会出现一次,如果超过一次,则没有效
                    temp=board[i][j]-'0'-1;
                    rol[i][temp]++;
                    row[j][temp]++;
                    group[i/3][j/3][temp]++;
                    if( rol[i][temp]>1||row[j][temp]>1||group[i/3][j/3][temp]>1){
                        return false;
                    }
                }

            }
            
        }
        return true;
    }
};
int main(){
    Solution s;
    vector<vector<char>> board={{'5','3','.','.','7','.','.','.','.'},
                                {'6','.','.','1','9','5','.','.','.'},
                                {'.','9','8','.','.','.','.','6','.'},
                                {'8','.','.','.','6','.','.','.','3'},
                                {'4','.','.','8','.','3','.','.','1'},
                                {'7','.','.','.','2','.','.','.','6'},
                                {'.','6','.','.','.','.','2','8','.'},
                                {'.','.','.','4','1','9','.','.','5'},
                                {'.','.','.','.','8','.','.','7','9'}};
    cout<<s.isValidSudoku(board);
    return 0;
}

 

posted on 2022-12-02 17:22  一仟零一夜丶  阅读(19)  评论(0)    收藏  举报