软件工程基础个人项目——数独
点击这里可看github上具体链接
软件工程基础个人项目——数独
本次个人项目关于数独的生成与求解
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
Estimate | 估计这个任务需要多少时间 | 1520 | |
Development | 开发 | ||
Analysis | 需求分析 | 20 | |
Design Spec | 生成设计文档 | 60 | |
Design Review | 设计复审 | ||
Coding Standard | 代码规范 | ||
Design | 具体设计 | 120 | |
Coding | 具体编码 | 600 | |
Code Review | 代码复审 | 200 | |
Test | 测试(自我测试,提交代码,代码修改) | 400 | |
Reporting | 报告 | 30 | |
Test Report | 测试报告 | 30 | |
Size Measurement | 计算工作量 | 30 | |
Postme & Process Improvement Plan | 事后总结并提出过程改进计划 | 30 | |
合计 | 1520 |
思路描述
最开始看到题目的时候,感觉压力很大,因为在此之前我从未了解过数独,担心自己不能很好的理解数独,更不要说通过代码编写让计算机完成数独的求解和生成了。但是在网上是可以找到很多之前学姐学长们智慧的结晶,在本次个人项目上为我提供了很多帮助。我先从网上找寻了关于数独的有关内容,大致明白了数独的概念,也尝试的自己手动解了解数独。那么怎么更好的通过计算机实现数独的生成与求解呢。我看了很多相关博客,找到了我能理解也觉得比较简单的方法。
生成数独:先生成一个1-9的无重复的排列,再将此排列平移。除了第一行之外的每一行,都是通过第一行向右平移某位生成,出去的数字回到排列左端。
求解数独:
使用回溯方法,同时设立vis来确定是否可以将某数字放在某位置上,参考了之前某位学长或者学姐的博客,最终确定这个方法。
程序实现过程
数独的生成:
写一个函数Create_sudoku(),
这是我最开始的想法,后来为了方便管理,我写了一个class Sudo,在其中创建了create 函数。
数独的求解:
求解是solve函数,中心思想回溯由Traceback()执行,其中设立的vis数组判断数字是否可以放在某位置上。需要setvis(),resetvis(),checkvis(),共同完成其功能。
设计图
来源:CSDN
作者:Kielf4
链接:https://blog.csdn.net/Kielf4/article/details/104015063