2017软件工程实践第二次作业

1、 项目地址:https://github.com/one-piece-zero/sudoku

2、PSP表格记录的估计耗时
1226437-20170910165908460-1976844582.png

3、解题思路:

  • 在拿到这个题目的时候,我最早想到的是大一下学期做的程序语言综合设计实践中的N皇后问题,这两个题目之间有许多的类似之处,行列不能重复,对于这次的题目来说,宫内的数字不能重复,对于N皇后问题来说,斜线部分不能重复。于是我拿起了大一时的解题报告来与这个题目一起分析。首先,对于左上角数字是固定的,那么就可以初始化左上角的数字,然后从第一行的后八位,运用srand函数产生的随机数,运用random_shuffle函数随机排列,第一行的数字分好之后,就从第二行的第一个数开始,随机产生,通过标记flag的值来判断是否与上下左右有所重复,若有所重复,则跳出循环,另取数重新开始,而宫内的数字则通过与前后左右还有3这个倍数的关系来进行检测,这个题目中,我用到了回溯法,当遇到冲突时,就返回上一个步骤,去新数来填,直到整个数独矩阵完成,N皇后问题当初也是用的回溯法解决的,在这次实践中又用到了,还是有所收获的。

4、设计实现过程:

  • 在开始的时候,拿到这个题目,想到了当初的N皇后问题,所以理所当然的想到了回溯法,在这次的代码中,我只写了一个函数,这个函数是用来完成整个数独的,我在主函数中先将数独矩阵的第一行完成,接着调用函数,在函数中采用回溯法一步一步完成整个数独矩阵。

5、代码说明
1226437-20170910171718835-1686775021.png
主要思路在注释中有体现

6、运行测试
1226437-20170910171924585-1380253109.png
1226437-20170910171940101-509986057.png

7、性能分析图
1226437-20170910173126960-1729171549.png

  • 从图中可以看出,在这次代码中有两个函数,main主函数和find函数,而明显的主函数占用的CPU要远远高于find函数,而此次使用了回溯算法,所以时间复杂度会较搞一些,对于较大的数字会处理的较慢些。

8、PSP表格记录的实际耗时
1226437-20170910173536929-1027733534.png

转载于:https://www.cnblogs.com/one-piece-zero/p/7501501.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7 安装或迁移 wordpress(完整迁移)

一、安装Apache web服务器 安装Apache web服务器: yum install -y httpd # 使用yum安装 systemctl start httpd # 启动Apache服务器 systemctl enable httpd # Apache服务器开机后自动启动 使用浏览器打开http://127.0.0.1检查Apache安装是否成功。成功后…

WinForm部署问题

WinForm部署问题 1、解决:This implementation is not part of the Windows Platform 问题? 一:单击 开始 ,单击 运行 ,键入 gpedit.msc ,然后单击 确定 。    二:依次展开 计算机配置 &…

oracle 未找到段的存储定义,Exp-00003 no storage definition found issue in oracle 11g (未找到段 (0,0) 的存储定义)...

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Tes已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集服务…

signal软件如何退出账号_超好用的手机视频剪辑软件Videoleap内购分享

注意事项【必读】:1.必须按照下面的教程操作,教程讲的很详细。2.如果遇到帐号密码错误,先看本页面新密码再登陆,别乱试密码。3.如果手机上有你购买的这个软件,请先卸载,再用我们的苹果id登陆下载&#xff0…

MySQL 常用内置函数

MySQL官方文档:https://dev.mysql.com/doc/refman/5.6/en/func-op-summary-ref.html MySQL数据库提供了很多函数包括 一、数学函数 二、字符串函数 三、日期时间函数 四、聚合函数(常用于GROUP BY从句的SELECT查询中) 五、条件判断函数 六、系统信息函数 七、…

python之eval函数,map函数,zip函数

eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果。所以,结合math当成一个计算器很好用。 eval()函数常见作用有: 1、计算字符串中有效的表达式,并返回结果 >>> eval(pow(2,…

第一个servlet小程序

第一个servlet小程序 com.fry.servlet.HelloServlet 1 package com.fry.servlet;2 3 import javax.servlet.ServletException;4 import javax.servlet.http.HttpServlet;5 import javax.servlet.http.HttpServletRequest;6 import javax.servlet.http.HttpServletResponse;7 im…

腾讯校园招聘面试的秘密

转自公司同事戴钊的文章 由于从事基层管理岗位的原因,最近两年有机会在武汉、南京、上海等地进行校园招聘,为公司选拔优秀人才,在这个过程中接触过一百多名各种类型的应聘毕业生,我深深为这些莘莘学子渴望进入腾讯的热情所感动&am…

win10开启oracle服务器配置,Windows环境(Win10)下安装、配置服务器类Oracle Database 11g Release 2...

该篇为服务器类Oracle Database 11gRelease 2的安装、配置,若需安装、配置桌面类(通常是选择桌面类,如果是将本机作为服务器来使用,则选择服务器类),可参考“Windows环境(Win10)下安装、配置桌面类Oracle Database 11g Release 2”…

简单的机器学习程序_人体动作识别小程序【机器学习 人工智能】

人体动作识别(Human activity recognition)是健康领域一个热点问题,它通过加速度计,陀螺仪等传感器记录人体运动数据,对人体动作进行识别。最近用微信小程序做了一个动作识别的项目,同时尝试部署了单片机。首先奉上b站的视频链接&…

python基础查漏补缺1--算数、字符串与变量

1. math相关函数 函 数描 述ceil(x) 大于或等于x的整数cos(x)  x的余弦 degrees(x)将x的弧度转换为度数exp(x)e的x次方factorial(n)计算n的阶乘(n!),n 必须为整数log(x)以e为底的x的对数log(x,b)以b为底的x的对数pow(x,y)x的y次方radians(s)将x转换为弧度数sin(x)x的正弦…

CSS布局说——可能是最全的

前言 现在,我们被称为前端工程师。然而,早年给我们的称呼却是页面仔。或许是职责越来越大,整体的前端井喷式的发展,使我们只关注了js,而疏远了css和html。 其实,我们可能经常在聊组件化,咋地咋地…

php dingo和jwt,dingo配合laravel、JWT使用

介绍:dingo api包是给laravel和lumen提供的Restful的工具包,它可以与jwt组件一起配合快速的完成用户认证,同时对于数据和运行过程中所产生的异常能够捕获到并且可以做出对应的响应。dingo文档地址:https://github.com/dingo/api/w…

重启开源,分享无限--微软面试187题精选

重启开源,分享无限--诚邀你加入微软面试187题的解题中 前期回顾 我想,只要是稍微浏览过我博客的朋友都知道,本博客内总体上大致分为两个部分的内容:1、算法(如十六个经典算法研究系列);2、面试与…

二三星缩水软件手机版_还在抱怨三星手机不好用?用这些软件立马解决

S10系列上市让三星在国内的销量有所回暖,但是很多小伙伴拿到手机后都在吐槽三星的软件工程师不行,比如手势操作太难用了,不如小米人性化。其实这只是你没找到秘诀而已,三星手机原来还可以这样使用?三星有一个官方软件&…

使用Settings Bundle为程序添加设置项

创建一个Demo来学习一个Setting Bundle为程序存储设置项 Settings Bundle是在自己的程序中建立的一组文件,利用它可以告诉设备中的Settings程序我们写的程序有哪些设置项。用户在Settings程序中设置好相关相关选项后回到我们自己的程序,自己的程序中的对…

Netty自娱自乐之协议栈设计

---恢复内容开始--- 俺工作已经一年又6个月了,想想过的真快,每天写业务,写业务,写业务......。然后就是祈祷着,这次上线不要出现线上bug。继续这每天无聊的增删改查,学习学习一下自己感兴趣的事&#xff0c…

Linux 状态命令之磁盘状态 df du

df df(disk free)命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。 默认情…

C++包扩展_利用 MATLAB Coder 将M代码生成C/C++代码

利用MATLAB Coder将MATLAB代码生成C/C代码​mp.weixin.qq.comMATLAB Coder 可以将MATLAB代码生成工程中常用的嵌入式或其他硬件平台的C或者C代码。使用者可以在MATLAB中进行验证,然后将生成后的代码集合到工程中。集合的方式可以是源码,静态库和动态库。…

linux 进程通信机制,linux的进程通信机制小结

linux向应用软件提供下列进程间通信手段:####第一类通信方式:只能用于父进程与子进程之间,或者两个兄递进程之间。>管道Pipe>信号Signal>跟踪Trace管道:由父进程来建立。管道两端的进程各自都将该管道视作一个文件。一个…