You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
# SudokuMatrix
|
|
|
|
|
|
|
|
|
|
> 程序设计基础:数独矩阵实验
|
|
|
|
|
>
|
|
|
|
|
> 作者:李彦筱
|
|
|
|
|
|
|
|
|
|
由于教学资料中没有实验报告的模版,暂时只提交说明性文件。
|
|
|
|
|
|
|
|
|
|
## 程序运行
|
|
|
|
|
|
|
|
|
|
### 类 Unix 系统(macOS, Linux)
|
|
|
|
|
|
|
|
|
|
- 确保您的系统已经安装了 gcc 与 make
|
|
|
|
|
- 在终端中打开作业所在文件夹,输入 `make` 即可编译
|
|
|
|
|
- 输入 `./SudokuMatrix` 即可运行程序
|
|
|
|
|
|
|
|
|
|
> 输入 `make clean` 可以清除已编译的文件,只留源代码
|
|
|
|
|
|
|
|
|
|
### Windows 下(Visual Studio中运行)
|
|
|
|
|
|
|
|
|
|
暂时待补充。
|
|
|
|
|
|
|
|
|
|
## 程序内容
|
|
|
|
|
|
|
|
|
|
`main.c` 中包含了 `testRandomMatrix`, `testJudgeMatrix`, `testSolveMatrix` 三个测试函数。在主函数中分别调用每一个函数,即可查看该部分的测试效果。
|
|
|
|
|
`testRandomMatrix` 测试了程序生成随机数独矩阵的能力。请注意,由于题目描述要求,生成的随机数独矩阵甚至不一定满足 `judgeMatrix` 对数独矩阵的要求
|
|
|
|
|
|
|
|
|
|
> `judgeMatrix` 中要求数独矩阵的列不能有重复的数字;但 `randomMatrix` 生成矩阵的要求不包含这点,导致生成的矩阵绝大部分都不满足要求
|
|
|
|
|
|
|
|
|
|
`testJudgeMatrix` 测试了程序判断数独矩阵是否有效的能力。数独矩阵有效,仅当它每一行、每一列、每个九宫格内没有重复的两个数字。
|
|
|
|
|
|
|
|
|
|
`testSolveMatrix` 测试了程序对三个预定义矩阵的求解能力。这个函数需要你传递 0~2 的一个整数作为参数,以便指定你要用哪个预定义矩阵做测试。这三个矩阵:
|
|
|
|
|
- 第一个:满足数独矩阵的要求,有解
|
|
|
|
|
- 第二个:不满足数独矩阵的要求,因此无解
|
|
|
|
|
- 第三个:满足数独矩阵的要求,但是无解
|
|
|
|
|
本函数不使用随机生成的数独矩阵。这是因为随机生成的数独矩阵几乎都不满足数独矩阵的要求(大概率存在列冲突),导致十个矩阵没一个是能解的…
|
|
|
|
|
|
|
|
|
|
四个要求的函数分别处于 `PrintMatrix.c`, `RandomMatrix.c`,`JudgeMatrix.c` 和 `SolveMatrix.c` 中。矩阵类本身的定义位于 `SudokuMatrix.h` 当中,其中函数(比如构造函数,析构函数)的实现位于 `SudokuMatrix.c` 中。想要查看这些函数的实现的话,请到对应文件中寻找。我已经为每个函数写了很详细的注释了,
|