构造数独问题


该算法的目的是要初始化一个数独,在一个9*9的二维数组ShuDu[9][9]中保存数独上对应的值(比如第一行第一列的值保存在ShuDu[0][0]上,以此类推,在把其中一些显示出来,一些隐藏起来)。大致流程是这样,数组上的值先初始化为0,然后循环81次产生1-9这些随机数,每次产生数后判断它所在数组位置上ShuDu[(i-1)/9][(i-1)%9]的同行,同列和同个单元格内是否已经出现这个值,如果没有就把它填充到数组上(比如第i次产生的随机数填充到ShuDu[(i-1)/9][(i-1)%9]上),如果已经出现了这个值,那么就重新产生随机数。现在问题来了,在进行到一定的程度上就出现了死循环(就是不管产生1-9那个数都无法满足条件)。

请问该怎么比较好解决这个问题?如果采用回溯法的话可能初始化一个数组会很久。

编码 算法

灰色的幽默 12 years, 9 months ago

Your Answer