sudoku--设想

在查阅了一些资料和自己动手写一写后,找到一种可行的解法。

  • 第一步

首先将9x9的数独方格分成九份3x3的九宫格,如下图

B1 B2 B3
B4 B5 B6
B7 B8 B9

而后在左上角的B1上随机生成九个数填入,我们用abcdefghi等字母来代替数字和说明普遍性,如下(0代表尚未填入)

B1:a b c B2:0 0 0 B3:0 0 0
     d e f      0 0 0      0 0 0
     g h i      0 0 0      0 0 0
B4:0 0 0 B5:0 0 0 B6:0 0 0
     0 0 0      0 0 0      0 0 0
     0 0 0      0 0 0      0 0 0
B7:0 0 0 B8:0 0 0 B9:0 0 0
     0 0 0      0 0 0      0 0 0
     0 0 0      0 0 0      0 0 0

  • 第二步

将B1的每一行进行自上而下的交换,分别填入B2、B3中,将列自右而左的交换填入B4、B5中,结果如下

B1:a b c B2:d e f B3:g h i
     d e f      g h i      a b c
     g h i      a b c      d e f
B4:c g b B5:0 0 0 B6:0 0 0
     f d e      0 0 0      0 0 0
     i g h      0 0 0      0 0 0
B7:b c a B8:0 0 0 B9:0 0 0
     e f d      0 0 0      0 0 0
     h i g      0 0 0      0 0 0

这样呢因为本身左上角的九宫格就不会有重复的数字出现,则填好的其他九宫格也不会有重复的数字出现。且每一行每一列都由前一行变得,也做到了行、列中不会有重复的数字。

  • 第三步

最后呢,我们将B2的列进行从右到左的交换,依次填入B5、B8中,将B3的列进行从右到左的交换,依次填入B6、B9中得到如下

B1:a b c B2:d e f B3:g h i
     d e f      g h i      a b c
     g h i      a b c      d e f
B4:c g b B5:f d e B6:i g h
     f d e      i g h      c a b
     i g h      c d b      f d e
B7:b c a B8:e f d B9h i g
     e f d     h i g     b c a
     h i g     b c a     e f d

可以看出这是一个合乎规定的数独,接下来就是代码了,给自己加油

posted @ 2017-09-06 21:30  HuXUzi  阅读(172)  评论(2编辑  收藏  举报