2020软件工程作业03
|||
|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|
| 这个作业属于哪个课程 | (https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1) |
| 作业要求 | (https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494) |
| 作业目标 | 实现一个命令行程序 |
| 作业正文 | 详见下文 |
|其他参考文献 | (https://www.baidu.com/?tn=80035161_1_dg、http://c.biancheng.net/) |
1.项目地址:
Github项目地址:(https://github.com/Chia-hsinChou/20177688)
仓库创建文件夹:
2.PSP表格:
PSP2.1| Personal Software Process Stages | 预估耗时(分钟) | 预估耗时(分钟)
- | :-: | :-: | :-: | -:
Planning | 计划 | 30 | 45|
Estimate | 估计这个任务需要多少时间 | 30 | 25 |
Development | 开发 | 4320 | 1920 |
Analysis | 需求分析(包括学习新技术) | 300 | 360|
Desgin Spec | 生成设计文档 | 30 | 10 |
Design Review | 设计复审 | 10 | 5 |
Coding Standard | 代码规范(为目前的开发制定合适的规范)| 60 | 30 |
Design | 具体设计 | 120 | 60 |
Coding | 具体编码 | 360 | 840 |
Code Review | 代码复审 | 70 | 40|
Test | 测试(自我测试,修改代码,提交修改)| 120 | 200|
Reporting | 报告 | 180 |180 |
Test Repor | 测试报告 | 60 | 30 |
Size Measurement | 计算工作量 | 20 | 10 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 60 | 25 |
合计 | | 5770 | 3740 |
3.解题思路描述
① 首先看到题目就是懵的,因为自己并不擅长玩数独,我想连数独的规则都不懂得,肯定是没有办法去实现这个程序的,于是我去百度了一下,百度百科说:数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。老师的要求是完成三宫格到九宫格的进阶(说实话此时我还没有了解数独的游戏秘诀.....还是一脸懵圈)
② 等我清楚规则后,觉得从三宫格往外扩展对我的编程工作而言实在是很复杂,三宫格实现之后,空间还要继续进行扩大,那样又要大幅度的改动代码,其实从九宫格推到三宫格更简单。可以将n宫格,分为需要划分和不需要划分两个部分,需要划分的通过n宫格划分的特性将里面的宫的length和width设为两个变量,就可以对宫进行操作,所以我也确定了用递归法来解这道题。
③ 在九宫格中需要定义一个唯一性函数用于判断某个数在某一行、列、宫上的某个位置是否是唯一合法。
4.设计实现过程
唯一性函数:
首先要判定数字i在(x,y)时,i在x行,在y列(有宫时在所在的宫内)是否是唯一的。在数独中,同一行、同一列、同一宫中不能出现相同的数字,如果找到相同的就返回false。
运用递归法:
DSF函数要先通过x = depth / gsize, y = depth % gsize来求出(x,y),如果这个位置不为空,就调用DSF(depth+1)函数,往下继续探索;如果这个位置上没有数字就将1~gsize(gsize是宫的大小)的数字填到里面去,此时检查该数字的唯一性,如果不唯一就填下一个数字,直到有数字具有唯一性。
主函数:
一开始读入n宫格的大小后,通过n宫格的特性,将3-6-9宫格分为一类,4-8宫格分为一类,5-7宫格分为一类:
5.性能分析
6.输入输出
7.心路历程与收获
写到这里并没有长吁一口气的轻松感 只觉得自己真的是太菜了...岂止是菜,简直是举步维艰
不记得在哪本书上看到说,欠谁的债都不要欠学习的债....感觉怎么追都追不上老师的步伐,老师你跑慢一点!!!!我还在地上爬呢!!!!!
不管怎么样还是学到了很多东西,这几天真的搞到头都大了,除了看网课抄笔记就是查资料,还厚着脸皮问了一些同学,但是大家都是菜鸡互啄,都不太会弄,所以还是在网上看了很多别人的代码和理解,也借鉴了许多别人的想法,这才踩着点勉勉强强交了作业。
老师说的这本书我都没有去看过.....(我错了!!!我马上就去看T T)
流下了不学无术的泪....果然就像老师说的,即使辛辛苦苦弄明白了怎么做,也不明白为什么这样做,在我这里就像是套模板一样,根本不懂得原理,好好学习吧还是T T