One.1
Github地址:https://github.com/zyp031502148/zyp1
解题思路:
看到数独这个题目的时候,我就想到了平时自己玩数独之后一开始怎么做的,可是发现那样的话需要先出一个题目,感觉有点蒙。后来把题目看完,才相知道是做出完整的数独,这样好像有点思路。在百度上搜了下,发现其实写数独是大概是通用几个方法的。由于要生成多个不同的数独,我是先把第一行设置成随机数,后面按照数独玩法检查,先检查同一行中有没有相同数,在检查同一列中有没有相同数,最后在检查小方格里面有没有相同数。在用递归算法求出每一行的数据。最后用一个主函数实现程序。
设计实现:
结合解题思路,我就想先拿一个函数(gtShuDu())实现检查数据的功能,在用一个函数(kaishi)实现完成整个数独矩阵,再用一个主函数(main())实现能形成N个数独矩阵功能。
代码说明:
if(shudu[a][i]!=num)//检查同一行里有没有num这个数,没有则 进入下一个检查
		  {
		  	jie=true;
		  }
		else
		{
			jie=false;
			break;
		}
if(jie)//检查同一列中有没有num这个数,没有则进入下一个检查
	{
		for(int j=1;j<a;j++)
		{
			if(shudu[j][b]==num)
			{
				jie=false;
			}
		}
	}
if(jie)//检测小方格中有没有数字num
	{
		int fangge1,fangge2;
		fangge1=a-a%3+1;
		fangge2=b-b%3+1;
		if(a%3==0)//这里是特殊情况,因为当余数为0时,根据上面设计会检查到下一个小方格而不是当前方格中。
			fangge1=a-2;
		if(b%3==0)
			fangge2=b-2;
		for( int t = 0 ; t < 3 ; t++  )
		{
			if( jie == false )
				break;
			for( int r = fangge2 ; r < fangge2+3 ; r++  )
			{
				if( shudu[fangge1][r] == num )
				{
					jie = false;
					break;
				}
			}
			fangge1++;
		}
	}
测试运行:
程序运行

实现数据

改进进程:
由于之前有参考别人的解题思路,便把代码按照思路这样写,改了很多遍,把一开始想用一个整数来判断条件的,现在用一个bool值来判断。然后都用if条件语句执行判断。比之前用整数来省了一些代码。
实际花费时间:
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | 
|---|---|---|---|
| Planning | 计划 | 15 | 15 | 
| · Estimate | · 估计这个任务需要多少时间 | 4天 | 5天 | 
| Development | 开发 | 240 | 320 | 
| · Analysis | · 需求分析 (包括学习新技术) | 240 | 360 | 
| · Design Spec | · 生成设计文档 | 60 | 60 | 
| · Design Review | · 设计复审 (和同事审核设计文档) | ||
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | ||
| · Design | · 具体设计 | 540 | 540 | 
| · Coding | · 具体编码 | 800 | 900 | 
| · Code Review | · 代码复审 | 180 | 240 | 
| · Test | · 测试(自我测试,修改代码,提交修改) | 240 | 600 | 
| Reporting | 报告 | ||
| · Test Report | · 测试报告 | ||
| · Size Measurement | · 计算工作量 | ||
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | ||
| 合计 | 
实践之后:
一开始其实是有点蒙的,写完第一版代码之后,结果老是出错,一开始是出现的第一排随机数都一样,后来我把随机种子从kaishi函数中放到主函数之内才解决。因为间隔时间太短导致种子一样,出来的结果也就一样。后来又出现了第一排正常,之后7排都是初始数据,没能出来结果,回去检查才发现是检查每一行有没有相同数据的那块出现问题,if条件没设对;改完条件又出现方格里面会出现重复数字,又去检查方格那块代码。发现是特殊情况没有可考虑到。当除以3得出的余数为0 是会到下一个方格中检查,所以检查不彻底会出现错误。终于改完所有错误之后才把结果设置输出到文件中。
这次实践是一个预热,我有找回那种当初写c++时候得出结果的那种满足感。不过还是有点思考不够仔细,在一些小细节方面出错,然后改半天。现在的我还是有严重拖延症,就比如这次作业,一开始想到了一点思路,但是就是没马上去写,过了一天又重新想了下。真真有点浪费之间!
《构建之法》中有一篇文章说“没有天生的天才”。我想虽然我在计算机这方面不是很强,但是也可以通过联系努力靠近那个目标。
随机推荐
- solr排序问题
			
搜搜引擎排序问题,因为涉及到的维度比较多,有时候单纯的依靠sort是无法满足需要的,例如:搜索商品的时候我希望不管怎么排无货的商品都置底,这样问题就来了,怎么排? 其实,solr是自己的解决 ...
 - LR的响应时间与使用IE所感受时间不一致的讨论
			
在做性能测试时,有时碰到这样一种情况,使用性能工具LR测试出来的响应时间比实际使用IE感受到的时间要长,例如,实际使用IE打开一个系统时只需要1~2秒,而使用LR跑一个用户所得出的结果可能是8秒.10 ...
 - HDU 1513 Palindrome:LCS(最长公共子序列)or 记忆化搜索
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加 ...
 - 开源社交系统ThinkSNS+ 0.7.3研发周报
			
什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+. 亲爱的粉丝,授权客户, ...
 - Ubuntu apt-get update 失败
			
apt-get碰上了"fetch http://--失败", 自带源在国内连接性不好. 解决:改用"阿里云Ubuntu源": https://www.yuren ...
 - C/C++ 知识点---C语言关键字(32个)
			
C/C++ 知识点 1.C语言关键字(32个) <1>.基本数据类型 [5] void :声明函数无返回值或无参数,声明空类型指针 char :声明字符型变量 int :声明整形变量 fl ...
 - 【leetocde】 105. Construct Binary Tree from Preorder and Inorder Traversal
			
Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...
 - 剑指OFFER——顺时针打印矩阵
			
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8 ...
 - css3文本字体
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - Linux下自动备份MySQL数据库并上传到远程FTP服务器
			
Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本 说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的xshelldata数据库 ...