美文网首页
lab 6 extra sudoku

lab 6 extra sudoku

作者: 切大巴 | 来源:发表于2018-11-11 06:00 被阅读0次

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

}

相关文章

网友评论

      本文标题:lab 6 extra sudoku

      本文链接:https://www.haomeiwen.com/subject/mrxxfqtx.html