数独大作业

软件工程基础——数独终局生成与求解(二)

一、代码链接

Github地址:https://github.com/tennisintheworld/sudoku

三、项目设计与实现过程

3、设计实现过程

(1)函数设计
函数可分为三部分:生成终局的函数和终局输出函数,数独问题的输入输出函数,求解数独的函数和结果输出函数(可以使用终局输出函数)。

  • 生成终局的函数和终局的输出函数:void buildans()函数进行数独的全排列构造;void buildsudoku(char* row1rule, char* row2rule, char* row3rule)函数生成数独终局和终局打印需要的空格和换行符号;void outputbuildsudoku()输出生成的终局到文件。
  • 数独问题的输入输出函数:void inputsudokuquestion(int row, char* save)函数用来从文件读取数独问题;
  • 求解数独的函数和结果输出函数:void solvesudoku(int a, int b)函数用来对数独问题进行求解;void outputsolvesudoku()函数用来输出答案。用回溯法求解数独时,用到了标记数组vis,还可以用三个函数表示标记数组的行为,void setvis(int a,int b,int num),void resetvis(int a,int b,int num),bool checkvis(int a,int b,int num)。

(2)单元测试设计
采用静态测试和动态测试相结合:在输出终局和结果到文件之前,可以先把储存结果和终局的数组打印出来看一下,先用小规模的测试用例试一下。如果是一些短的代码可以直接走读过一遍,看看有没有什么错误和可以改进的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值