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 ,然后单击 确定 。    二:依次展开 计算机配置 &…

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

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

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…

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

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

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

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

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

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

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

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

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

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

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

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

Netty自娱自乐之协议栈设计

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

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管道:由父进程来建立。管道两端的进程各自都将该管道视作一个文件。一个…

阿里云胡晓明:数据智能将为城市生活带来真正价值

8月30日,在2017全球(上海)人工智能创新峰会-世界人工智能城市规划大会上,阿里巴巴集团资深副总裁、阿里云总裁胡晓明作《通往智能之路》主题演讲,指出数据智能将从交通、医疗、城市治理等方面影响城市生活,…

【iCore1S 双核心板_FPGA】例程十二:基于单口RAM的ARM+FPGA数据存取实验

实验现象: 核心代码: module single_port_ram(input CLK_12M,input WR,input RD,input CS0,inout [15:0]DB,input [24:16]A,output FPGA_LEDR,output FPGA_LEDG,output FPGA_LEDB); //----------------------------pll-------------------------------//…

curl post https_Linux命令cURL详解,并实现文件定时上传到ftp服务器的程序

前言前段时间群里讨论,想实现某个文件定时上传到服务器要怎么来实现。我记得之前做过 一个项目:为高通的iot模组编写FOTA功能:实现模组可以远程下载升级镜像包,实现版本升级功能。并当时使用的一个超级强大的工具cURL。心血来潮&a…

linux系统页面缓存,Linux缓存机制之页缓存

内核采用一种通用的地址空间方案,来建立缓存数据与其来源之间的关联。1) 内存中的页分配到每个地址空间。这些页的内容可以由用户进程或内核本身使用各式各样的方法操作。这些数据表示了缓存中的内容;2) 后备存储器struct backing_dev_info指定了填充地…

十月百度,阿里巴巴,迅雷搜狗最新面试七十题(更新至10.17)

十月百度,阿里巴巴,迅雷搜狗最新面试十一题 引言 当即早已进入10月份,十一过后,招聘,笔试,面试,求职渐趋火热。而在这一系列过程背后浮出的各大IT公司的笔试/面试题则蕴含着诸多思想与设计&…

fasttext 文本分类_4种常见的NLP实践思路【特征提取+分类模型】

越来越多的人选择参加算法赛事,为了提升项目实践能力,同时也希望能拿到好的成绩增加履历的丰富度。期望如此美好,现实却是:看完赛题,一点思路都木有。那么,当我们拿到一个算法赛题后,如何破题&a…