软件工程基础-个人项目-数独

任务:实现一个能够生成数独局并且能求解数独问题的控制台程序。

1、GitHub:https://github.com/MiaoZhou48/SoftwareEngineeringProject

2、时间耗费

PSD2.1

Personnal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning  计划  40  40
.Estimate .估计这个任务需要多长时间    
Development 开发  150  120
.Analysis .需求分析(包括学习新技术)  180  200
.Design Spec .生成设计文档  150  150
.Design Review .设计复审(和同事审核设计文档)  60  60
.Coding Standard .代码规范(为目前的开发制定合适的规范)  60  60
.Design 具体设计  80  80
.Coding .具体编码  1600  1800
.Code Review .代码复审  100  150
.Test .测试(自我测试,修改代码,提交修改)  200  250
Reporting 报告  120  150
.Test Report .测试报告  80  100
.Size Measurement .计算工作量  40  30
.Postmortem & Process Improvement Plan .事后总结,并提出过程改进计划  50  40
   合计  2910  3190

3、解题思路:

  此项目可以细分为两个功能:生成数独、解数独。

  生成数独我考虑采用的是回溯的方法,对残缺数独不断求解,从而得到相应数量的完善的数独。

  确定好方法之后便是漫长的学习之路,参考了相应的回溯算法的博客以及其他算法的数独生成博客。

  在学习过程中也见识到了很多新的思路生成数独,比如说对一个已经合理的数独进行变换,然后判断其在变换之后是否依然是符合数独规范。通过这种方式生成数独,首先会保证结果的互异性,其次相比于回溯不需要大量的计算,节省了大量的时间。

  但是由于已经开始用回溯算法写了,所以之后的改进阶段会再尝试一下敢变思路。

4、设计实现过程

  程序主体是3个函数

  judge():解数独函数中用此函数判断回溯条件。

  solve():具体的解函数本体。

  construct():构建函数。

  封装成函数有利于代码的复用,与此同时提升了程序的简洁性和可读性。

  函数逻辑说明:

  

5、性能改进及思路

6、代码说明(思路解释+注释说明)

7、实际耗时

  具体的时间消耗见最上方的表格。

猜你喜欢

转载自www.cnblogs.com/allen-zm/p/8923787.html