软件工程实践2017第二次作业
软件工程实践2017第二次作业
1)Github地址
https://github.com/Maple27/sudoku
2)解题思路
- 个人从小就对数独就很喜欢,对解数独有一定程度的了解,这次自己开发一个构造数独棋盘的程序,我觉的十分有趣并充满挑战。对于开发的思路,我首先想到的是用回溯法,参考了一些网上资料,又看了看题目需求需要生成N个不重复的已解数独棋盘,想到了使用随机数来控制随机棋盘的生成,虽然在特定条件下棋盘会出现重复,但由于我通过当前时间来控制随机数的产生,所以产生重复数独的几率是很小的(暂未想到更好的解决方案)。
3)设计实现
- 本程序由于没有太复杂的调用和功能,所以采用C语言完成,没有使用到面向对象思想。本程序共有4个函数(主函数,回溯法构造数独棋盘函数,检查数字合法性函数,输出函数),其中主函数调用回溯法构造函数,构造函数里再调用检查函数和输出函数实现整体功能。
4)代码说明
检查数字合法性
//横向检查for (p = 0; p < 9; p++)if (p != i && sudoku[p][j] == t)return 0;//纵向检查for (p = 0; p < 9; p++)if (p != j && sudoku[i][p] == t)return 0;//九宫格内检查 p = i / 3;q = j / 3;for (m = p * 3; m < p * 3 + 3; m++)for (n = q * 3; n < q * 3 + 3; n++)if (m != i && n != j && sudoku[m][n] == t)return 0;
回溯法
while (1){int i = k / 9;int j = k % 9;while (1){sudoku[i][j]++;if (sudoku[i][j] == 10){sudoku[i][j] = 0;k--;break;}else if (check(sudoku, i, j) == 1){k++;break;}}}
5)测试运行
6)改进
- 在改进程序性能方面上大概话费了2个小时,我的改进主要是针对如何进行错误输入的判断和暴力回溯法对CPU和内存的影响,其中还存在一些没有解决的问题。
- 性能分析图:
7)PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 10 |
Development | 开发 | 375 | 465 |
· Analysis | · 需求分析 (包括学习新技术) | 30 | 30 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 5 | 5 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 0 | 0 |
· Design | · 具体设计 | 60 | 80 |
· Coding | · 具体编码 | 180 | 210 |
· Code Review | · 代码复审 | 30 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 90 |
Reporting | 报告 | 90 | 90 |
· Test Report | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 30 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 485 | 565 |
转载于:https://www.cnblogs.com/Maple27/p/7500939.html
软件工程实践2017第二次作业相关推荐
- 软件工程实践2017第二次作业-----个人项目实战之数独
软件工程实践2017第二次作业-----个人项目实战之数独 最后一门考试2017.9.16 github地址:https://github.com/ssuo/shudu 题目地址:http://www ...
- 软件工程python就业方向-软件工程实践2019第二次作业
前言 自己在第一次作业中写下的目前最想学的技术是**"学习好软件方向的各种技术,熟练运用编程语言"**.再怎么说,这也太过宽泛了,而且想在一学期做到这一点是不现实的.自己曾在大一系 ...
- 软件工程实践2017第一次结对作业
结队项目--第一次作业 1. 结对成员: 031502614 赖志平 031502627 王国华 2.NABCD N (Need, 需求) 首先,提出的需求如下: 要解决的困扰:流程繁琐复杂,各个部门 ...
- 软件工程实践 2017 第一次作业
砥砺前行 软件工程实践 2017 第一次作业 今年又重拾 cnblogs,上一次也是张栋老师教的面向对象程序设计,在我所经历过的教学方式中,这样的可以说是较为独特的--强烈的实践和理论相结合的模式,鼓 ...
- 软件工程2017第二次作业
GitHub:sudoku 解题思路描述 刚看到题目的时候,我去,好难.吃了根冰棍冷静下来,开始细细思考.题目的要求是随机生成N个不重复的数独棋盘,有两种方案:1.用数字1~9填满第一个九宫格,然后再 ...
- 20189222 《网络攻防实践》第二周作业
20189222<网络攻防实践>第2周学习总结 教材学习内容总结 第一章: 要点1:分清黑客与骇客,提倡在掌握技术的同时,还要遵循黑客道德与法律法规. 要点2:网络攻防的主要内容包括系统安 ...
- 【Web编程实践课第二次作业】体育新闻世界
夢に敗れた幼き人 被梦想打败的幼稚的人 憧れたヒーローには 是无法变成自己 成れやしないんだ 所憧憬的英雄的 現実に叩き起された時 被现实叫醒的时候 理想郷は離れて 理想的桃花源便会离去 崩れ落ちてき ...
- 17秋 软件工程 结对项目 第二次作业
作业地址 结对第二次作业 结对成员 陈翔, 031502209; 李鸣, 031502316. Github Deputy: Department-to-Student bidirectional s ...
- 软件工程实践2017结对第二次作业
结对成员:吴君毅(031502629),吴伟根(031502631) Github链接:https://github.com/n9705/Dep-Stu 一. 题目要求 构造部门和学生输入数据的生成程 ...
最新文章
- java accept encoding_Accept-Encoding gzip 乱码 和Okhttp的解决方法
- MelGan原理与实践篇
- 操作系统概念学习笔记 11 进程同步(一)
- 数据结构 单链表 (C++)(转载)
- ML.NET 示例:图像分类模型训练-首选API(基于原生TensorFlow迁移学习)
- android 单元测试 多线程,单元测试多线程Android RxJava
- 【Leetcode】102. 二叉树的层次遍历
- SpringBoot2.X + SpringCache + redis解决乱码问题
- a标签 href和onclick 传递的this区别
- 【转】解决“你没有权限访问,请与网络管理员联系”
- 画中画功能的遥控器按键设计
- 计算机中vlookup函数公式,Excel表中VLOOKUP函数使用方法和操作实例
- 公司邮箱怎么注册?公司企业邮箱怎么登录?
- 百度AI评测:红酒识别
- Linux 打包可执行文件
- mysql索引执行顺序_mysql索引及sql执行顺序
- HTML基础(五)——a标签
- 多角度透彻理解渐近表示法(大O表示法)
- GitHub的高级搜索方式--找到最想要的源码
- 火山引擎、阿里云、腾讯云联合发布“超低延时“直播技术标准