一、需求分析
数据流图
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的值。
具体的代码实现见下一篇博客,问题设计