#include<stdio.h>
#include<assert.h>
#include<stdbool.h>
/*input the sudoku*/
void readSudoku(int board[9][9]){
int row,col;
for(row=0;row<9;row++){
for(col=0;col<9;col++){
scanf(" %ld",board[row][col]);
}
}
}
/* judge whether each number appears only once in every row */
bool isValidrow(int board[9][9], int row, int col) {
int i,j,k;
for(k = 0; k < row; k++)
{
for(i = 0; i < col - 1; i++)
{
for(j = i + 1; j < col; j++)
{
if(board[k][i] == 0 )
break;
else if(board[k][j] == 0)
continue;
else if(board[k][i] == board[k][j]) return false;
}
}
}
}
/* judge whether each number appears only once in every column */
bool isValidcolumn(int board[9][9], int row, int col){
int i,j,k;
for(k = 0; k < col; k++)
{
for(i = 0; i < row - 1; i++)
{
for(j = i + 1; j < row; j++)
{
if(board[i][k] == 0)
break;
else if(board[j][k] == 0)
continue;
else if(board[i][k] == board[j][k]) return false;
}
}
}
}
/* judge whether each number only appears once in 3*3 matrix */
bool isValidMatrix(int board[9][9]){
int a = 0, b = 0, c = 0, d = 0;
int row = 0;
int col = 0;
int num;
for(num = 0; num < 9; num++)
{
for(a = row; a < 3 + row; a++)
{
for(b = col; b < 3 + col; b++)
{
if(board[a][b] == 0)
{
continue;
}
/*judge whether there are repeated values in the 3*3 matrix*/
for(c = 0 + row;c < 3 + row; c++)
{
for(d = 0 + col; d < 3 + col; d++)
{
if(board[c][d] == 0)
continue;
else if((a != c) && (b != d) && (board[a][b] == board[c][d]))
return false;
}
}
}
}
/*move to next 3*3 matrix*/
col = col + 3;
if(col >= 9)
{
col = 0;
row = row + 3;
}
}
return true;
}
网友评论