我正在尝试制作一个数独生成器。我的方法是拥有一个包含81个元素的数组,每个元素本身就是数字1-9的数组,代表每个方块的每种可能性。我计划的方法是按顺序遍历每个方格,从可用数字中随机选取一个数字,并删除该行,列或子方格中该数字的所有其他副本。例如,如果我为第一个方格选择4,那么我将从第一行,第一列和第一个子方格的其他方格中删除所有4个。
我想知道这是不是一个好方法。它不需要进行数字验证,因为唯一可选择的数字将是剩余的合法数字。我担心的是,如果我中途退出数字,那么我将不得不回溯到开头,并且它将利用宇宙的时代来产生一个谜题。你怎么看?我知道还有其他方法可行,但我很想知道我的方法是否有效。
感谢。
答案 0 :(得分:0)
是的,这个算法似乎是有效的。但是,我没有看到为什么你需要回溯。你描述它的方式,它不应该用完所有数字,直到它们全部填满。
答案 1 :(得分:0)
稍微提高了一点,我发现有时单个正方形确实没有数字,这意味着我必须回到起点,因为回溯将是荒谬的复杂。我将放弃这个算法并尝试根据这个人的算法来做这个