2020 软件工程作业 03
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 |
这个作业的目标 | 个人编写程序。 |
作业正文 | 如下 |
其他参考文献 | www.baidu.com |
1.Github 项目地址
https://github.com/fengliu782/20177631/tree/master/src
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 30 | 50 |
Estimate | 估计这个任务需要多少时间 | 350 | 500 |
Development | 开发 | 20 | 30 |
Analysis | 需求分析 (包括学习新技术) | 60 | 120 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审 | 30 | 40 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
Design | 具体设计 | 20 | 60 |
Coding | 具体编码 | 100 | 300 |
Code Review | 代码复审 | 20 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 100 | 200 |
Reporting | 报告 | 20 | 30 |
Test Repor | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 20 | 30 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 20 |
合计 | 830 | 1550 |
3.解题思路
1.题目的意思是求出不同阶数的数独
2.对于3阶的数独只需要判断每行每列上无重复的即可
3用DFS深度填数检测+回溯法
4.实现过程
要求命令行实现,这个是真不太会呀。各种百度。
数独实现过程流程图:
DFS算法:
public static boolean DFS(int[][] a,boolean[][] cols,boolean[][] rows) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if(a[i][j]==0){
for (int l = 0; l < 3; l++) {
if(!cols[j][l]&&!rows[i][l]){//l对于的数字l+1没有在行列块中出现
rows[i][l] = cols[j][l] = true;
a[i][j] = 1 + l;//下标加1
if(DFS(a, cols, rows)) {
return true;//递进则返回true
}else {
rows[i][l] = cols[j][l] = false;//递进失败则回溯
a[i][j] = 0;
}
}
}
return false;//a[i][j]==0时,l发现都不能填进去
}//the end of a[i][j]==0
}
}
return true;//没有a[i][j]==0,则返回true
}
5.程序运行结果
6.性能分析图
7.总结
经过这次的作业后,我发现自己的基础不牢固。题目本身很好理解,但是其他的命令行我也了解一点。头都大了。还有单元测试,好不容易学会单元测试的方法,但是却不知道怎么去写单元测试方法中的代码,静态检测和性能分析图也不太会弄,但是一定会去弄好的。
但是自己还是有所收获的,感觉自己阅读代码的能力提高了,各种工具用的也逐渐熟练。感觉这是一个好现象,接下来的任务就是恶补基础。希望自己以后能比较完美的解决问题,把能力搞上去。
8.评分
作业头 | GITHUB项目地址 | 消除警告 | psp表格 | 实现过程 | 改进行性能程序 | 解题思路 | 代码说明 | 心路和感想 | 总分 |
---|---|---|---|---|---|---|---|---|---|
2分 | 1分 | 2分 | 1分 | 2分 | 1分 | 1分 | 1分 | 1分 | 12 分 |
2 | 1 | 2 | 1 | 1 | 0 | 0.5 | 0.5 | 1 | 9分 |