One.1

时间:2022-07-12 02:54:27

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++;
} }

测试运行:

程序运行

One.1

实现数据

One.1

改进进程:

由于之前有参考别人的解题思路,便把代码按照思路这样写,改了很多遍,把一开始想用一个整数来判断条件的,现在用一个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++时候得出结果的那种满足感。不过还是有点思考不够仔细,在一些小细节方面出错,然后改半天。现在的我还是有严重拖延症,就比如这次作业,一开始想到了一点思路,但是就是没马上去写,过了一天又重新想了下。真真有点浪费之间!

《构建之法》中有一篇文章说“没有天生的天才”。我想虽然我在计算机这方面不是很强,但是也可以通过联系努力靠近那个目标。

随机推荐

  1. Jquery&plus;Ajax下拉框级联查询

  2. C&plus;&plus; 中的类构造函数 &amp&semi; 析构函数

    类的构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置 ...

  3. for 循环

    #include <iostream> int main(){ ; ; val <= ; ++val) { sum += val; } std::cout << &quo ...

  4. Thu夏令营 总结

    感觉这次thu夏令营简直就是爆RP啊 竟然签了无条件本一 [Waring]RP已空 话说这次考试设定 竟然是下午两点开始考试 考到五点- - 导致中午必须午睡 宾馆里清华也不近 按原本试机安排到12点 ...

  5. ecshop SQL注入漏洞导致代码执行

    漏洞名称:ecshop SQL注入漏洞导致代码执行补丁编号:11208761补丁文件:/includes/libinsert.php补丁来源:云盾自研漏洞描述:ecshop的/includes/lib ...

  6. Single Number2

    题目链接:http://oj.leetcode.com/problems/single-number-ii/ Given an array of integers, every element app ...

  7. MySQL5&period;7 多实例

    1,先按MySQL5.7安装好后 mkdir dbdata_3307 chown mysql:mysql -R dbdata_3307 2,./bin/mysqld  --initialize --u ...

  8. tp3&period;2&period;3运用phpexcel将excel文件导入mysql数据库

    1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...

  9. Oracle to&lowbar;date&lpar;&rpar;函数的用法介绍

    to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,需要的朋友可以参考下     在Oracle数据库中,Oracle t ...

  10. SpringCloud教程 &vert; 第六篇&colon; 分布式配置中心&lpar;Spring Cloud Config&rpar;&lpar;Finchley版本&rpar;

    在上一篇文章讲述zuul的时候,已经提到过,使用配置服务来保存各个服务的配置文件.它就是Spring Cloud Config. 一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管 ...

相关文章