随机法

数独终盘生成的几种方法

北战南征 提交于 2019-12-04 19:10:27
数独(すうどく,Sudoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。 一般情况下,产生一个数独题目,包含两个步骤: 产生一个数独终盘(9X9) 在第一步产生的数独终盘中,根据难易程度,在终盘上挖掉不同数目的数字。 经过该两个步骤之后,我们就可以将某一个数独难题展示出来,如: 本文列举数独终盘产生的几个方法,大家一起来看看吧。 矩阵转换法 矩阵转换法,简言之,就是对一个已有的数独终盘矩阵进行操作。 主要采用 交换数字、交换行/列数据 等方法,产生新的矩阵。 为了完成矩阵的转换,我们需要有可用的数独终盘矩阵作为 种子矩阵 才行。可以采用如下做法完成: 先给定几个可用数独终盘作为备选种子矩阵。 产生一个随机数,随机选中其中的一个作为种子矩阵。 如编写一个产生种子矩阵的工具类: import java.util.Random; /** * * @author wangmengjun * */ public final class SeedSudokuMatrixFactory { private static final int seedSudokuArrays[][][] = { { { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, { 4, 5, 6,