2020软件工程作业03
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
| 这个作业的目标 | 解九宫格数独 |
| 作业正文 | 本文 |
| 其他参考文献 | 百度 |
GitHub地址
https://github.com/alexlee-j/20177623
PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 100 |
| Estimate | 估计这个任务需要多少时间 | 60 | 100 |
| Development | 开发 | 1100 | 2280 |
| Analysis | 需求分析 (包括学习新技术) | 300 | 480 |
| Design Spec | 生成设计文档 | 30 | 30 |
| Design Review | 设计复审 | 20 | 50 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
| Design | 具体设计 | 120 | 180 |
| Coding | 具体编码 | 300 | 900 |
| Code Review | 代码复审 | 60 | 120 |
| Test | 测试(自我测试,修改代码,提交修改 | 240 | 500 |
| Reporting | 报告 | 120 | 120 |
| Test Repor | 测试报告 | 30 | 30 |
| Size Measurement | 计算工作量 | 90 | 120 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 30 |
| 合计 | 1310 | 2780 |
解题思路
想着用蛮力法来解决数独,然后就百度到了DFS算法。用深度优先搜索对每行每列进行遍历,对为空的进行枚举,然后在检查其合法性,看是否不符合条件。若满足条件说明,求得了此空的解,接着向下一个格枚举,若不符合条件,则置0,再枚举,直到所有构建数独矩阵完成,输出结果。
功能设计模块
流程图

检查合法性

核心代码

性能分析
这个只调用了81次但是却占用了99%的时间,没办法优化,毕竟用的深度优先搜索算法

测试结果

心路历程
一看到这个题目的时候,第一眼说实话,我题目都没太看懂,看了几分钟,理清了题目的意图。实现一个解数独的程序,用命令行实现解数独并输入指定的文件和输出到其他文件里。首先我不太清楚怎么读取文件和输出文件,所以就想着先实现一个解数独的再说,于是就想着就用蛮力法来解决这个数独问题,然后去百度了一些相关的算法,在解决了数独后,还有读取文件和输出文件的问题了,但是我百度到fstream,ofstream,放到代码中好像实现不了。
自评
| 作业头 | GitHub地址 | 消除警告 | psp表格 | 解题思路描述 | 设计实现过程 | 改进性能 | 代码说明 | 感想余心路历程 | 总分 |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 8 |

浙公网安备 33010602011771号