1、删除readFromFile函数的函数体,考察学生的文件读写能力;
2、删除Solve函数;
3、删除solveSudoku函数的函数体。其中:
a)参数const char a[][COL]表示初盘二维数组;
参数char b[][COL]表示解的二维数组
需要将其添加进去
/*
* 数独学生端程序
* 左妍
* 计算机科学与技术系
* 2017/6/12
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9
#define COL 9
#define CORRECT 0
#define WRONG -1
#define MAXNUM 1000 /*数独游戏个数*/
int checkSudoku(const char a[][COL]){
int i,j,x,y;
for( i = 0; i < ROW ; i++){
for(j = 0 ; j < COL ; j++){
for(x = 0 ; x < COL ; x++)
if(a[i][x] == a[i][j] && x != j )
return WRONG;
for(x = 0 ; x < ROW ; x++)
if(a[x][j] == a[i][j] && x != i )
return WRONG;
for(x = i/3*3 ; x < i/3*3+3 ; x ++)
for(y = j/3*3 ; y < j/3*3+3 ; y++)
if(a[x][y] == a[i][j] && (x != i && y != j))
return WRONG;
}
}
return CORRECT;
}
void printSudoku(const char a[][COL]){
int i,j;
printf("\n ┌────┬────┬────┐\n");
for( i = 0 ; i < ROW ; i++){
if(i != 0 && i%3 == 0) printf(" ├────┼────┼────┤\n");
printf(" │");
for( j = 0 ; j < COL ; j++){
if(j != 0 && j%3 == 0) printf(" │");
if(a[i][j])
printf(" %d",a[i][j]);
else printf(" ");
}
printf(" │\n");
}
printf(" └────┴────┴────┘\n");
}
void readFromFile(char a[][COL], const char filename[]){
// To Be Solved
// 从文件filename中读取到的数独初盘存储到数组a[][COL]中
}
void solveSudoku(const char a[][COL], char b[][COL]){
// To Be Solved
// 参数const char a[][COL]表示初盘二维数组;
// 参数char b[][COL]表示解的二维数组。
}
int main(){
char starting_grid[ROW][COL]={0};
char result[ROW][COL]={0};
char filename[50];
int rr;
double time_from, time_to, time_sum = 0;
int i;
for( i = 0; i < MAXNUM ; i++){
sprintf(filename,"sudoku\\%04d.txt",i);
readFromFile(starting_grid,filename);
printf("\n\n *%4d *",i);
printSudoku(starting_grid);
time_from = clock();
solveSudoku(starting_grid,result);
time_to = clock();
time_sum += time_to - time_from;
printSudoku(result);
rr = checkSudoku(result);
if( rr == WRONG){
printf("Something goes wrong...\n");
return WRONG;
}
else printf(" Correct!!!\n");
printf(" ==============================");
}
printf("\n Congretulations! ToTal Time:%fs\n",time_sum / CLOCKS_PER_SEC);
return 0;
}