1.Github地址:https://github.com/hjz563585967/20177708
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
Planning | 计划 | 2 | 4 |
Estimate | 估计这个任务需要多少时间 | 48 | 56 |
Development | 开发 | 15 | 20 |
Analysis | 需求分析 (包括学习新技术) | 5 | 5 |
Design Spec | 生成设计文档 | 3 | 4 |
Design Review | 设计复审 | 3 | 3.5 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 2 | 2 |
Design | 具体设计 | 10 | 2 |
Coding | 具体编码 | 6 | 6 |
Code Review | 代码复审 | 3 | 4 |
Test | 测试(自我测试,修改代码,提交修改 | 2 | 3 |
Reporting | 报告 | 1 | 2 |
Test Repor | 测试报告 | 1 | 2 |
Size Measurement | 计算工作量 | 1 | 2 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 2 | 1.5 |
合计 | 99 | 117 |
3.解题思路 遍历数组,找到数字为0的数字,从1开始通过判断函数看填入的数是否满足要求,如果满足,就填入当前位置,如果发现填入的数字大于矩阵的规模重新遍历数组,找到下一个为0的数字,向上一次修改的位置改成下一个修改位置的值,如果遍历完成没有发现为0的数字,则遍历完成。
4.实现过程
定义输入输出函数,检查函数,遍历函数
接着读入数独矩阵
输出数独矩阵
判断key填入时是否满足条件
判断n所在的横竖列是否合法
接着深搜构造数独,所有的都符合,退出递归,当前位不为空时跳过,否则对当前位进行枚举测试。
满足条件时填入数字,然后继续搜索,返回时如果构造成功,则直接退出,如果构造不成功,还原当前位。
5.实验结果
6.单元测试
关于单元测试我使用的是VS2019的Studio Profiling Tools,GPU,CPU使用情况,检测以及内存使用率。包括测试的输入输出函数,检查函数,以及遍历函数。
对这些性能的测试,我自己也不是很能看明白,花了一些时间去百度上搜索以及看了老师和其他同学制作的视频,懂得如何去操作,但自己觉得还是不够。
7.错误异常
虽然完成了代码的以及测试分析,但运行的时候还是出现了一些问题,比如在调用函数的时候忘记使用检查函数对递归函数进行检查以至于中间数值为空的时候直接跳过了。修改这些问题还是花费了几个小时的时间。对于我这个学C++的新手还是有很多东西不懂,需要不断的学习来增强自己的知识技能。