数独_设计实现过程
目录
开发环境
操作系统 Windows 10
IDE: Visual Studio 2017 Visual Studio code
编程语言:c++
代码组织
代码结构
模块设计
项目功能实现部分,主要分为4个模块,分别为主函数,生成数独模块,求解数独模块,生成数独问题模块。
-
主函数
int main(int argc, char* argv[])
int mainfun(int argc, char* argv[])
功能:通过分析命令行,执行不同的功能能 ,对输入的错误命令参数进行提示
-
生成数独模块
int generate_final(int sum, char *filepath);
返回值:失败,返回非0;打开文件失败返回1;
成功,返回0;
功能:通过首行全排列,其余行平移,加行间交换实现数独生成部分,可生成1~1209600个数独
-
求解数独模块
int isvalue(int x, int y, int value);
返回值:有效,返回1;
无效,返回0;
功能:判断 (x,y)位置上value值(尝试填入的值)是否合法
int slove(char que[][9], int x, int y)
进行单个数独的求解函数,通过函数迭代求解数独.数独存储在que二维数组中
int slove_all(char *filepath)
返回值:失败,返回非0;打开文件失败返回1;文件空返回2;
成功,返回0;
功能:用于求解filepath的所有数独,首先判断文件是否有效,是否为空,然后从filepath读取一个数独,对每个数独调用slove函数进行求解,再把结果写入指定文件中,再读取下一个,直到文件末尾。
-
生成数独问题模块
int generate_que(int num_solution);
返回值:失败,返回非0;打开文件失败返回1;文件空返回2;
成功,返回0;
功能:根据生成的数独终局生成一定数量的数独到指定文件
int generate_queall();
返回值:失败,返回非0;打开文件失败返回1;文件空返回2;
成功,返回0;
功能:根据生成的数独终局生成全部数独问题
int linenum(char *filepath);
返回值:文件行数
功能:获得文件的行数,用来判断生成数独问题的数目是否合法
函数流程图
由于求解数独函数较为复杂,此处展示slove_al