软件工程第三次作业
软件工程第三次作业
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 |
解题思路
拿到题目之后我首先想到的是:
步骤一:利用循环寻找每一行/每一列/每一宫里是否只缺少一个数,然后补上之后再次循环直到出现缺少两个的,再到缺少三,缺少四以此类推。
步骤二:开始推测填补,填上一个数后再进入步骤一,直到出错(每一行/每一列/每一宫里出现重复的数)
步骤三:如果步骤二出错,则返回上一步,尝试填补另一个可填的数。直到试出全部结果。
遇到的问题:
返回上一步的时候要记录之前的填补数据同时要讨论的情况过多,代码太复杂。
改进:
之前的思路出错是因为我站在人的角度考虑,但事实上从计算机方面来讲,强大的性能可以让我们的思路简单化->从前往后填空格然后递归。
首先逐行寻找代填的空位,计算其个数。然后计算数独中所待填入的空白数 ,然后用回溯法求解数独。
测试
输入文件:

)
输出文件:
运行截图:


单元测试:


浙公网安备 33010602011771号