Github地址:https://github.com/sbls/131700114 

 

 

 

 

 

这个作业属于哪个课程https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494
这个作业的目标    Sudoku
作业正文 如下
其他参考文献  

 

 

 

 

 

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

 

 

解题思路:

思路:拿到题目的时候,我觉得对我好陌生,根本不知道数独是什么东西,连现实中都没玩过,在软件上又该怎样实现呢,无疑是难上加难。后面在浏览器中找了好久,总算找到一些资料让我学习数独的解法思路,数独一般的解法需要用到很多次的推导,对各行各列各个九宫格进行排查,删选候选数后挑选候选数最少的去填。

 

数独的解法:

第一步:遍历预处理过的矩阵的每一个元素,通过对行,列以及周围格子的检查,得出该位置所有可能的侯选数值。

第二步:通过检查更新过的数独的结果,有三种情况。

1.数独已经被全部填完并正确。

2.数独还有空未填。

3.该数独不满足规则。

第三步:根据上述的情况,分别对应三种情况:

1.先把此次答案打印出来,然后返回上一次递归继续解题,查看是否有多解。

2.选取未填的格子里面侯选数最少的一个格子选填一个侯选值,执行第二步。

3.退出当前的尝试,返回上一次递归并换下一个可能的侯选值。

3.  结束

所有的尝试结束后,递归程序退出。并显示结果

 

 

 

运行结果部分

1、以学号为名的文件夹中的目录下有src文件夹,在src目录下有名为Sudoku.java文件,且Sudoku.java中包含 public static void main(String[] args) 方法

 

 

2、将变量设置到对应的位置

 

 

 

3、做循环,将满足条件的取值都放进对应的九宫格里

 

 

 

 

4、运行前

 

 

5、运行后

 

 

 

 

 

 

实现:我的代码里有一个类就是Sudoku类,有一个main主函数,三个被主函数调用的函数。他们之间的关系就是调用与被调用的关系,单元测试的话没来得及做,考试还有各科的课程设计压力太大,我已经连续三天通宵了,每天睡觉时间不超过三小时。单元测试我以后会做出来,希望老师能原谅我这次没有完全的完成这次作业,我真的尽力了也很努力的在做。

 

 

个人心得:需要我去学习的太多太多了,这次代码实现对于我来说好难,我把室友都请教烦了,整整几天都在缠着室友问来问去,这些代码有许多都是室友的帮助下写的,只懂得了30%左右,但我有信心把这些全部弄懂,我做完这次作业肯定还不算完,我想争取靠我自己就能把代码实现和测试,以后这篇随笔我可能会经常改进,把室友教我的代码改成我自己写的。