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软件工程实践第二次作业相关推荐

  1. 2017软件工程实践第二次作业(数独)

    我的Github项目地址,使用工具VS2017社区版 / DevC++5.11,开发语言为C语言 基础题要求如下,附加题不会做就不贴出来了...: 项目需求 利用程序随机构造出 N 个已解答的数独棋盘 ...

  2. 软件工程实践第二次作业——个人项目实战(数独)

    作业链接 1)Github项目地址 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间 见 8). 3)解题思路描述 拿到题目后,阅读了项目需求,得知这次作业要求 ...

  3. 关于Axure RP软件的介绍——软件工程实践第二次个人作业

    关于Axure RP软件的介绍--软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...

  4. 个人作业 - 2017软件工程实践总结

    个人作业 - 2017软件工程实践总结 一.回顾 1)对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强计算机专业的能力和就业竞争力",对比目前的所学所练所得,在哪些方面达到 ...

  5. 20189200余超 2018-2019-2 移动平台应用开发实践第二周作业

    2018-2019-2 移动平台应用开发实践第二周作业 实验部分,在linux中用git命令将代码传到码云上 成功上传的截图 码云上的截图 遇到如下的问题 解决方法 我发现在进行第一步git clon ...

  6. 2017软件工程实践总结作业

    2017最后最长的一段话,写给软工. 第一次例会合照:(当时的PM头发还算茂密--) 一.请回望暑假时的第一次作业,你对于软件工程课程的想象 1)对比开篇博客你对课程目标和期待,"希望通过实 ...

  7. 2017软件工程实践总结

    一.请回望暑假时的第一次作业,你对于软件工程课程的想象 1)对比开篇博客你对课程目标和期待,"希望通过实践锻炼,增强计算机专业的能力和就业竞争力",对比目前的所学所练所得,在哪些方 ...

  8. 激光SLAM理论与实践 第二次作业(里程计标定)

    1.章节: 1.激光SLAM理论与实践-第五期 第一次作业(矩阵坐标变换) 2.激光SLAM理论与实践-第五期 第二次作业(里程计标定) 3.激光SLAM理论与实践-第五期 第三次作业(去运动畸变) ...

  9. 2017软件工程实践

    课程信息  软件工程实践 参考教材 <构建之法>   作者:邹欣, 编辑:周筠 他山之石 北京航空航天大学    罗杰, 刘乾 东北师范大学          杨贵福 北京电子科技学院   ...

最新文章

  1. 卡顿严重_魔兽怀旧服:安其拉开门二测结果出炉,暴雪依然无法解决卡顿问题...
  2. Spring实战之二:装配Bean
  3. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )
  4. php 手机唯一标示_Php获取移动设备唯一标识
  5. android 点击item跳转页面,Android RecyclerView Item 点击事件,简单
  6. java 读取properties文件
  7. html5 drawimage 不显示,javascript – 来自视频的HTML5 Canvas drawImage在第一次绘制时不显示...
  8. php操作access数据库类代码
  9. C++中的模板template typename T
  10. 线性与非线性规划问题求解
  11. TapTap Android电话面经
  12. 天之涯地之角,raid信息丢了怎么找—记磁盘阵列数据恢复过程
  13. 《可复制的领导力》学习总结
  14. 如何知道一个App的包名
  15. 郭麒麟任《最强大脑》见证官,住杭州的台湾人清华学霸吴哲维来了
  16. MATLAB-工具箱-如何导出拟合系数?
  17. stm32f302实现斩波控制步进电机_电子产品装调与智能检测实训考核装置
  18. 8个独立站海外营销工具
  19. matlab 共振峰检测,基于matlab的语音共振峰的估计.doc
  20. Windows PowerShell与命令提示符的比较

热门文章

  1. 【EOJ Monthly 2019.01 - E】唐纳德先生与假骰子(假概率问题)
  2. 【牛客 - 369A】小D的剧场(线性dp)
  3. 【牛客 - 330C】Applese 走迷宫(bfs)
  4. *【POJ - 1860】Currency Exchange (单源最长路---Bellman_Ford算法判正环)
  5. 【HDU - 1263】 水果(STL)
  6. 【HDU - 3038】How Many Answers Are Wrong (带权并查集--权为区间和)
  7. 关于ajax请求400问题解决
  8. nodejs 保存html文件路径,nodejs如何将获得的数据保存到本地?
  9. c语言煎饼问题算法,C煎饼分类程序?
  10. php 64位编码解码,php base64 编码和解码