#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;
}