一、需求分析
数据流图
0层图:

1层图:

2层图:

程序流程图

二、问题解决思路
在从网上查阅了很多关于求解数独的资料后,再加上题目要求的范围再1到1000000之间,认识到在这个数据量范围内,可以通过深度优先搜索加回溯来解决这个问题。
参考的文章:链接
那么基本的解题思路大概如下:
1、生成数独终局。
题目要求数独第一个数字为学号后两位模10再加1,我的学号对应的第一位数字应为2。在确定第一个数字后,递归调用create(i,j)函数,第一次i=0,j=1代表从第0行(即第一行,数组下标从0开始),第1个数字(即第2个数字)开始,之后每次确定完数字后调用create(i,j+1)即深度优先搜索,该换行时换行,当有位置1-9任何一个数字都无法满足时,先暂时把当前位置为0,回溯修改之前的值。直到生成一个数独终局,到生成指定数量的数独终局后结束。
2、求解数独终局。
求解与生成的基本思路相似。不同之处在于跳过不为0的值。
具体的代码实现见下一篇博客,问题设计
本文探讨了在1到1000000的数据范围内使用深度优先搜索加回溯算法解决数独问题的方法。首先,根据学号确定首个数字,通过递归调用create函数生成数独终局。随后,采用类似策略求解数独,跳过已填充的格子。

被折叠的 条评论
为什么被折叠?



