2017软件工程实践第二次作业
1、 项目地址:https://github.com/one-piece-zero/sudoku
2、PSP表格记录的估计耗时
3、解题思路:
- 在拿到这个题目的时候,我最早想到的是大一下学期做的程序语言综合设计实践中的N皇后问题,这两个题目之间有许多的类似之处,行列不能重复,对于这次的题目来说,宫内的数字不能重复,对于N皇后问题来说,斜线部分不能重复。于是我拿起了大一时的解题报告来与这个题目一起分析。首先,对于左上角数字是固定的,那么就可以初始化左上角的数字,然后从第一行的后八位,运用srand函数产生的随机数,运用random_shuffle函数随机排列,第一行的数字分好之后,就从第二行的第一个数开始,随机产生,通过标记flag的值来判断是否与上下左右有所重复,若有所重复,则跳出循环,另取数重新开始,而宫内的数字则通过与前后左右还有3这个倍数的关系来进行检测,这个题目中,我用到了回溯法,当遇到冲突时,就返回上一个步骤,去新数来填,直到整个数独矩阵完成,N皇后问题当初也是用的回溯法解决的,在这次实践中又用到了,还是有所收获的。
4、设计实现过程:
- 在开始的时候,拿到这个题目,想到了当初的N皇后问题,所以理所当然的想到了回溯法,在这次的代码中,我只写了一个函数,这个函数是用来完成整个数独的,我在主函数中先将数独矩阵的第一行完成,接着调用函数,在函数中采用回溯法一步一步完成整个数独矩阵。
5、代码说明
主要思路在注释中有体现
6、运行测试
7、性能分析图
- 从图中可以看出,在这次代码中有两个函数,main主函数和find函数,而明显的主函数占用的CPU要远远高于find函数,而此次使用了回溯算法,所以时间复杂度会较搞一些,对于较大的数字会处理的较慢些。
8、PSP表格记录的实际耗时
转载于:https://www.cnblogs.com/one-piece-zero/p/7501501.html
2017软件工程实践第二次作业相关推荐
- 2017软件工程实践第二次作业(数独)
我的Github项目地址,使用工具VS2017社区版 / DevC++5.11,开发语言为C语言 基础题要求如下,附加题不会做就不贴出来了...: 项目需求 利用程序随机构造出 N 个已解答的数独棋盘 ...
- 软件工程实践第二次作业——个人项目实战(数独)
作业链接 1)Github项目地址 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间 见 8). 3)解题思路描述 拿到题目后,阅读了项目需求,得知这次作业要求 ...
- 关于Axure RP软件的介绍——软件工程实践第二次个人作业
关于Axure RP软件的介绍--软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...
- 个人作业 - 2017软件工程实践总结
个人作业 - 2017软件工程实践总结 一.回顾 1)对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强计算机专业的能力和就业竞争力",对比目前的所学所练所得,在哪些方面达到 ...
- 20189200余超 2018-2019-2 移动平台应用开发实践第二周作业
2018-2019-2 移动平台应用开发实践第二周作业 实验部分,在linux中用git命令将代码传到码云上 成功上传的截图 码云上的截图 遇到如下的问题 解决方法 我发现在进行第一步git clon ...
- 2017软件工程实践总结作业
2017最后最长的一段话,写给软工. 第一次例会合照:(当时的PM头发还算茂密--) 一.请回望暑假时的第一次作业,你对于软件工程课程的想象 1)对比开篇博客你对课程目标和期待,"希望通过实 ...
- 2017软件工程实践总结
一.请回望暑假时的第一次作业,你对于软件工程课程的想象 1)对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强计算机专业的能力和就业竞争力",对比目前的所学所练所得,在哪些方 ...
- 激光SLAM理论与实践 第二次作业(里程计标定)
1.章节: 1.激光SLAM理论与实践-第五期 第一次作业(矩阵坐标变换) 2.激光SLAM理论与实践-第五期 第二次作业(里程计标定) 3.激光SLAM理论与实践-第五期 第三次作业(去运动畸变) ...
- 2017软件工程实践
课程信息 软件工程实践 参考教材 <构建之法> 作者:邹欣, 编辑:周筠 他山之石 北京航空航天大学 罗杰, 刘乾 东北师范大学 杨贵福 北京电子科技学院 ...
最新文章
- 卡顿严重_魔兽怀旧服:安其拉开门二测结果出炉,暴雪依然无法解决卡顿问题...
- Spring实战之二:装配Bean
- 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
- php 手机唯一标示_Php获取移动设备唯一标识
- android 点击item跳转页面,Android RecyclerView Item 点击事件,简单
- java 读取properties文件
- html5 drawimage 不显示,javascript – 来自视频的HTML5 Canvas drawImage在第一次绘制时不显示...
- php操作access数据库类代码
- C++中的模板template typename T
- 线性与非线性规划问题求解
- TapTap Android电话面经
- 天之涯地之角,raid信息丢了怎么找—记磁盘阵列数据恢复过程
- 《可复制的领导力》学习总结
- 如何知道一个App的包名
- 郭麒麟任《最强大脑》见证官,住杭州的台湾人清华学霸吴哲维来了
- MATLAB-工具箱-如何导出拟合系数?
- stm32f302实现斩波控制步进电机_电子产品装调与智能检测实训考核装置
- 8个独立站海外营销工具
- matlab 共振峰检测,基于matlab的语音共振峰的估计.doc
- Windows PowerShell与命令提示符的比较
热门文章
- 【EOJ Monthly 2019.01 - E】唐纳德先生与假骰子(假概率问题)
- 【牛客 - 369A】小D的剧场(线性dp)
- 【牛客 - 330C】Applese 走迷宫(bfs)
- *【POJ - 1860】Currency Exchange (单源最长路---Bellman_Ford算法判正环)
- 【HDU - 1263】 水果(STL)
- 【HDU - 3038】How Many Answers Are Wrong (带权并查集--权为区间和)
- 关于ajax请求400问题解决
- nodejs 保存html文件路径,nodejs如何将获得的数据保存到本地?
- c语言煎饼问题算法,C煎饼分类程序?
- php 64位编码解码,php base64 编码和解码