본문 바로가기
과거에 공부했던 것들(저장용)/학부생

Sudoku 정답이 맞는지 확인하는 프로그램

by under_coverzzz 2015. 7. 23.
반응형


solution.txt

#include <stdio.h>

#include <stdlib.h>


#define SZ 9

int sudoku[SZ][SZ];


int verify(int row, int column)

{

int i, j;

int cp_row = row / 3;

int cp_column = column / 3;


for (i = 0; i <SZ; i++)                     //해당되는 column까지만 검사

{

if (sudoku[row][i] == sudoku[row][column])

{

printf("%d %d\n", sudoku[row][i], sudoku[row][column]);

printf("[%d][%d]의 값과 [%d][%d]의 값이 중복입니다\n", row, column, row, i);

return 0;

}

}

for (i = 0; i <SZ; i++)                     //해당되는 row까지만 검사

{

if (sudoku[i][column] == sudoku[row][column])

{

printf("[%d][%d]의 값과 [%d][%d]의 값이 중복입니다\n", row, column, i, column);

return 0;

}

}

for (i = cp_row * 3; i <= row; i++)

{

for (j = cp_column * 3; j <((cp_column + 1) * 3); j++)

{

if (i != row && j != column)

{

if (sudoku[i][j] == sudoku[row][column])

{


}

else

{

printf("[%d][%d]의 값과 [%d][%d]이 중복입니다 \n", row, column, row, i);

return 0;

}

}

}

}

printf("아무런 문제가 없습니다.\n");

return 1;

}

int main()

{

FILE * fp1 = fopen("verify.txt", "rt");

int i, j;

int ret=0;

if (fp1 == NULL)return;


for (int i = 0; i < SZ; i++)

{

for (int j = 0; j < SZ; j++)

{

fscanf(fp1, " %1d", &sudoku[i][j]);     //fscanf함수로 하나씩 읽어와 table 배열에 하나씩 저장해준다.

printf("%2d", sudoku[i][j]);

}

printf("\n");

}


for (i = 0; i < SZ; i++)

{

for (j = 0; j < SZ; j++)

{

ret = verify(i, j);

if (ret == 1)

{

printf("OK\n");

}

}

}

fclose(fp1);

}

반응형