这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
作业目标 | 实现数独求解,进行检查 |
作业正文 | 以下内容 |
其他参考文献 | 百度 |
1、Github项目地址
https://github.com/AFBF1/20177607/blob/master/shudu1.java
2、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 360 | 500 |
Development | 开发 | 60 | 50 |
Analysis | 需求分析 (包括学习新技术) | 30 | 30 |
Design Spec | 生成设计文档 | 30 | 20 |
Design Review | 设计复审 | 20 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 160 | 100 |
Design | 具体设计 | 200 | 40 |
Coding | 具体编码 | 200 | 600 |
Code Review | 代码复审 | 30 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 100 | 70 |
Reporting | 报告 | 100 | 50 |
Test Repor | 测试报告 | 20 | 10 |
Size Measurement | 计算工作量 | 30 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 1400 | 1570 |
3、解题思路
1、题目的本质就是一个求解不同阶数的数独。
2、对于3、5、7阶的数独只需要判断行列上有有无重复值即可。
3、 对于4、6、8、9阶数独,还需要判断其宫内有无重复值。
4、实现过程
首先,题目要求命令行运行程序,这个东西开始做的时候,困扰我很久,各种百度, 还是没做出来。最后没办法,放弃掉这个模块,把精力放在了不同阶数的数独求解上。
简单的数据流图:
对于数独的求解,我首先从3、5、7,阶数独开始下手,因为它们没有宫的判断。这时候就用上了代码中的check方法
对于4、6、8、9阶数独,用switch接受不一样的m值(数独的阶数),可以看出和没有宫比较的数独的不同之处
这样检测的方法就实现了。
当然我们还需要去给0加数字的方法,这里用到的是深度优先搜索,dfs方法
5、程序运行结果
6、静态检测
可以看出没得啥子大问题
7、性能分析图
硬要说改进,我觉得输入数独矩阵的时候,别一个个输入,直接粘贴复制事先准备好的,要时就少一点。
8、总结
经过这次的作业后,我发现自己的基础不牢固。题目本身很好理解,但是现在都没搞出来的数独命令行运行程序,还是没进展。但是其他的命令行我也了解一点。头都大了。还有单元测试,好不容易学会单元测试的方法,但是却不知道怎么去写单元测试方法中的代码。
但是自己还是有所收获的,感觉自己阅读代码的能力提高了,各种工具用的也逐渐熟练。感觉这是一个好现象,接下来的任务就是恶补基础。希望自己以后能比较完美的解决问题,把能力搞上去。
9、评分
作业头 | GITHUB项目地址 | 消除警告 | psp表格 | 实现过程 | 改进行性能程序 | 解题思路 | 代码说明 | 心路和感想 | 总分 |
---|---|---|---|---|---|---|---|---|---|
2分 | 1分 | 2分 | 1分 | 2分 | 1分 | 1分 | 1分 | 1分 | 12 分 |
2 | 1 | 2 | 1 | 1 | 0 | 0.5 | 0.5 | 1 | 9分 |