zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    JDBC(5)-处理大数据
    JDBC(4)-Result结果集
    JDBC(3)-使用PreparedStatement接口实现增、删、改操作
    JDBC(2)-使用statment接口实现增删改操作
    JDBC(1)-连接数据库
    selenium+junit4实现参数化自动化测试
    selenium自动化测试用例需要关注的几点(二)
    【转】selenium自动化测试用例需要关注的几点(一)
    Selenium+excel实现参数化自动化测试
    POI基本操作
  • 原文地址:https://www.cnblogs.com/SwordX/p/7486900.html
Copyright © 2011-2022 走看看