BIT软工个人项目-数独

GitHub项目地址:

https://github.com/FounDerSquare/SE-sudoku

一、任务

  • 实现一个能够生成数独终局并且能求解数独问题的控制台程序。
  • 提交的代码要求经过代码质量分析工具的分析并消除所有的警告。
  • 对项目的首个版本使用性能分析工具找出性能瓶颈并改进。
  • 及时维护仓库与博客。

二、PSP表格


PSP2.1


Personal Software Process Stages


预估耗时

(分钟)


实际耗时

(分钟)


Planning


计划


30


Estimate


估计任务需要时间


30


Development


开发


2820


Analysis


需求分析(与技术学习)


60


Design Spec


生成设计文档


60


Design Review


设计复审(同行评审)


180


Coding Standard


代码规范


30


Design


具体设计


120


Coding


具体编码


1260


Code Review


代码复审


90


Test


测试


1020


Report


报告


300


Test Report


测试报告


120


Size Measurement


计算工作量


60


Postmortem& process improvement plan


事后总结并提出改进计划


120


 


合计


3150

三、解题思路描述

分析具体任务需求可以将任务分为三部分。

第一部分,生成各不相同的,最多1,000,000个空行隔开的9×9数独终局。一个数独终局的生成可以用第一行的平移来形成。第一行很容易做到1~9不重复,只要下面几行在平移的时候每一行平移错开的位数不同,就可以保证9个行9个列都是不包含重复数字。为了让3×3方格也满足规则,平移时,每三行一组,组内每行间平移错开的位数相差3。这样每三行每三列存在逻辑关系,就能保证3×3方格满足规则。(感觉很像密码学里的凯撒密码)

大致算法思路是这样,再加上命令行参数的设置和导出到文件的设置就可以了。

第二部分,求解数独。参考网上一些方法打算采用dfs。

①检查从1到9哪个可以被放在当前的空位;

②找到一个暂时可行的数就先放进去,挪到下一个空位进行操作①;

③如果遇到一个空位填不进去数,返回上一层dfs的递归,重新操作①;

④直到所有的位置都填满了数,递归结束。

  第三部分,性能优化(如果有余力尝试搞GUI)。

原文地址:https://www.cnblogs.com/FounDerSquare/p/12130905.html

时间: 2024-10-08 03:00:22

BIT软工个人项目-数独的相关文章

软工团队项目个人总结

经过了一个学期的软工课程学习,以及长期的团队开发,收获有下. 用户:创新就是极致的用户体验.在开发我们的这款游戏的开始阶段,我们与校内很多同学交流了一下他们对这款游戏的看法,并与他们在线下对游戏进行试玩,然后他们也对我们提出了很多意见,包括有些时候觉得我们某些地方设置的太傻了,随机性太大,博弈性不够等问题.而且有时候交流还会出现一些问题,但总的来说,我们还是从中挖掘了很多可以改进的点,分析了用户的需要,改进了挺多地方的规则的.然后,秉承着从软工课程上学到的,能让用户少点一下,绝不多点一下的类似的

软工2019_MucMuc项目个人总结

MucMuc项目个人总结 1.相关链接 原型界面设计链接 UML设计链接 github项目链接 2.项目个人分工 项目总体的部分设计 后端项目总体构建, 代码实现, 以及测试 阿里云后端服务器的配置和项目部署 3.开发过程 开始 在项目最初的阶段, 整个组对于要做怎样的工作并没有清晰的想法. 不知道如何开始工作, 从何做起, 开发工具为何, 是面临的最大难题. 因为没有任何有对于web开发有经验的成员. 从前后端开发工具的选择上, 到前后端通信的具体流程, 都没有一个较好的认知. 这也直接导致了

软工个人项目WC(Python实现)

一.github地址:https://github.com/1371272989/WC.exe 实现功能: 1.-c:统计字符数: 2.-w:统计单词数: 3.-l:统计行数: 4.-a:统计复杂数据(空行.代码行和注释行): 5.-s:递归处理目录下符合条件的文件: 通配符没有全面,只能辨别后缀. 6.-x:通过图形界面选择文件: 可以通过图形界面选择文件,但输出还是在cmd上显示. 二.PSP PSP Personal Software Process Stages 预估耗时(分钟) 实际耗

2017BUAA软工个人项目之数独

1.项目GitHub地址:https://github.com/ZiJiaW/Soduko (由于一开始把sudoku看成了soduko,于是名字建错了,读起来可能有点奇怪-) 2.项目PSP表格如下: PSP2.1 Personal Software Process Stages 预估耗时 实际耗时 Planning 计划 0.5h 0.5h .Estimate .估计这个任务需要多少时间 0.5h 0.5h Development 开发 20.5h 21.5 .Analysis .需求分析(

软工实践项目课程的自我目标

对实践项目完成后学习到的能力的预期 组长说,攻坚安卓方向,那就希望首先懂得安卓这门语言吧 然后就是了解安卓应用的开发过程吧 对项目课程的期望 但愿难度不要太大,虽然越难越锻炼人,但我还是不希望难 有一定的补救机会就更好了 对项目的愿景规划 不懂,好好学习,天天向上!

软工团队项目之项目选择

项目基础:考试练习系统APP 项目扩展:能让客户坚持每天做题的APP 需求分析:首先,用户会选择这个APP,那么必然有做题的必要和需求,也许是为了即将来临的考试也可能是真的为了做题给自己填补漏洞,那么不管是哪种情况,大量的刷题是免不了的,那么我们这个APP就有了市场需求. 对市面上已有的类似的APP分析:其实在市场上已经有了很多成熟的类似的APP,那么我们所要制作的就必须有我们的特色.传统的考试系统或是练习系统,基本上都是能从数据库中抽取一定量的题,组合成一套试卷,来供用户使用,而在用户提交答案

软工个人项目——地铁最短路径分析

一.开发环境 IDEA(java) 二.需求分析 设计简单UI界面(Java Swing) 用户可以自行选择起点.终点的地铁线路和对应的站点 用户选择后后台返回一个或多个方案 三.设计思路 启动程序读取地铁站点和线路信息文件"subway.txt",并将站点和线路信息储存在有向图中 根据用户的选择输入起点终点等参数 UI界面提供地铁线路.起始站点和目的站点的选择 通过最短路径算法求解最优的出行线路(采用Dijkstra算法或Floyd算法),将结果输出到一个txt文件 测试优化 四.项

二、软工个人项目:文本信息统计器

本软件的代码:https://github.com/amekao/SE_work1 界面: 一.需求分析阶段: 需求分析: 总需求:需要用户在cmd运行程序,根据所输入的参数提供对应的计算模式 基本功能: -c -w -l 显示字符数,词数,行数 拓展功能:-a 显示具体行数, -s 可以递归遍历指定目录下的文件 高级功能: -x 弹出界面让用户选择要统计的文本,显示所有的信息 二.设计阶段: 考虑到python语言对文本操作提供了较好的接口,而且文件编码也比较丰富,因此决定使用python来完

软工个人项目(Java实现)

一. Github地址: https://github.com/RuiBingo/PersonalWork 二.个人PSP表格: PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 20 · Estimate · 估计这个任务需要多少时间 60 20 Development 开发 1200  1080 · Analysis · 需求分析  120  100 · Design Spec · 生成设计文档  30  30 · Design Review · 设