#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);
}
'과거에 공부했던 것들(저장용) > 학부생' 카테고리의 다른 글
Avr studio) atmega128 계산기 프로그램 _ 인터럽트 사용 (0) | 2015.07.23 |
---|---|
Huffman 코딩 (구현한 부분까지) (0) | 2015.07.23 |
Sudoku 해결 프로그램 (0) | 2015.07.23 |
아이언돔 예측하기 (0) | 2015.07.23 |
월세예측 프로그램 (0) | 2015.07.23 |