sudoku--设想

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

    首先将9x9的数独方格分成九份3x3的九宫格,如下图
B1B2B3
B4B5B6
B7B8B9
而后在左上角的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

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

转载于:https://www.cnblogs.com/SwordX/p/7486900.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值