软件工程第三次作业

软件工程第三次作业

github地址:

https://github.com/Q1176011838/031702612

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 120 120
Estimate 估计这个任务需要多少时间 1000 1400
Development 开发 600 600
Analysis 需求分析 (包括学习新技术) 120 120
Design Spec 生成设计文档 50 60
Design Review 设计复审 30 60
Coding Standard 代码规范 (为目前的开发制定合适的规范) 120 120
Design 具体设计 120 120
Coding 具体编码 360 500
Code Review 代码复审 300 360
Test 测试(自我测试,修改代码,提交修改) 60 120
Reporting 报告 120 120
Test Repor 测试报告 60 120
Size Measurement 计算工作量 60 70
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 120 60
合计 3240 3950

解题思路

拿到题目之后我首先想到的是:

步骤一:利用循环寻找每一行/每一列/每一宫里是否只缺少一个数,然后补上之后再次循环直到出现缺少两个的,再到缺少三,缺少四以此类推。
步骤二:开始推测填补,填上一个数后再进入步骤一,直到出错(每一行/每一列/每一宫里出现重复的数)
步骤三:如果步骤二出错,则返回上一步,尝试填补另一个可填的数。直到试出全部结果。

遇到的问题:

返回上一步的时候要记录之前的填补数据同时要讨论的情况过多,代码太复杂。

改进:

之前的思路出错是因为我站在人的角度考虑,但事实上从计算机方面来讲,强大的性能可以让我们的思路简单化->从前往后填空格然后递归。
首先逐行寻找代填的空位,计算其个数。然后计算数独中所待填入的空白数 ,然后用回溯法求解数独。

测试

输入文件:
![](

)
输出文件:

运行截图:

单元测试:

posted @ 2019-09-25 22:20  SuperCookie  阅读(170)  评论(2)    收藏  举报