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 |