耽搁了好久今天补一下吧
数独中 1~9 在每一行 每一列还有每个九宫格上只出现一次,每次都随机生成一个新的数独速度太慢,我们可以借用一个生成好的数独当模板。
i |
g |
h |
c |
a |
b |
f |
d |
e |
c |
a |
b |
f |
d |
e |
i |
g |
h |
f |
d |
e |
i |
g |
h |
c |
a |
b |
g |
h |
i |
a |
b |
c |
d |
e |
f |
a |
b |
c |
d |
e |
f |
g |
h |
i |
d |
e |
f |
g |
h |
i |
a |
b |
c |
h |
i |
g |
b |
c |
a |
e |
f |
d |
b |
c |
a |
e |
f |
d |
h |
i |
g |
e |
f |
d |
h |
i |
g |
b |
c |
a |
如图可以让1~9 来分别代替这些数字,算上左上方固定的数字共有8!种不同的方法。行和行之间也可以互换共有2!*3!*3!,同理列之间也有这么多。三种情况考虑起来共有约2e8种情况,大于题目所要求数量。
实现代码的思路:分别生成上述的阶乘数,输出时直接索引每个数字对应的值输出即可。(比如生成了1,3,2,5,4,6,8,7,9分别对应a~i,1,3,2,6,5,4,9,8,7分别对应行,输出直接按照所对应的数字输出即可)