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

  • 第一步

    首先将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

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

sudoku--设想的更多相关文章

  1. Sudoku Generator

    Sudoku 算法 标签(空格分隔): 软工实践 设想:通过第一行,来生成2, 3行的排列,再通过1 - 3 生成4 - 6排列. 2 3 行的生成由上一行生成 公式为$grid[i][j] = gr ...

  2. 关于Hadoop用户体系的设想(胡思乱想)

    关于Hadoop的用户体系设计设想 Hadoop并没有一个完整的用户体系,其权限控制的对象,主要是Linux的其它用户(即非安装Hadoop的用户),控制方式也和Linux的文件权限很像,目前权限控制 ...

  3. Leetcode 笔记 36 - Sudoku Solver

    题目链接:Sudoku Solver | LeetCode OJ Write a program to solve a Sudoku puzzle by filling the empty cells ...

  4. [LeetCode] Sudoku Solver 求解数独

    Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...

  5. [LeetCode] Valid Sudoku 验证数独

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

  6. LeetCode 36 Valid Sudoku

    Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...

  7. 【leetcode】Valid Sudoku

    题目简述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...

  8. ACM : POJ 2676 SudoKu DFS - 数独

    SudoKu Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu POJ 2676 Descr ...

  9. ACM: ICPC/CCPC Sudoku DFS - 数独

    Sudoku Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/65535K (Java/Other) Total Submis ...

  10. Leetcode: Sudoku Solver

    July 19, 2015 Problem statement: Write a program to solve a Sudoku puzzle by filling the empty cells ...

随机推荐

  1. 一个UITableViewCell的简单动画效果

    实现下面UITableViewDelegate的方法: forRowAtIndexPath:(NSIndexPath *)indexPath{ CATransform3D rotation; rota ...

  2. 数据结构二叉树的所有基本功能实现。(C++版)

    本人刚学数据结构,对树的基本功能网上找不到C++代码 便自己写了一份,贴出方便大家进行测试和学习. 大部分功能未测试,如有错误或者BUG,请高手们指教一下,谢谢. 结点声明: BinTreeNode. ...

  3. 【head first python】1.初识python 人人都爱列表

    #coding:utf-8 #创建简单的python列表 movies = ["The Holy Grail", "The Life of Brain", &q ...

  4. linux下scrapy环境搭建

    最近使用scrapy做数据挖掘,使用scrapy定时抓取数据并存入MongoDB,本文记录环境搭建过程以作备忘 OS:ubuntu 14.04  python:2.7.6 scrapy:1.0.5 D ...

  5. POJ 3311 Hie with the Pie:TSP(旅行商)【节点可多次经过】

    题目链接:http://poj.org/problem?id=3311 题意: 你在0号点(pizza店),要往1到n号节点送pizza. 每个节点可以重复经过. 给你一个(n+1)*(n+1)的邻接 ...

  6. Markdown几个简单的例子

    定义型列表 语法说明: 定义型列表由名词和解释组成.一行写上定义,紧跟一行写上解释. 解释的写法:紧跟一个缩进(Tab) Markdown : 轻量级文本标记语言,可以转换成html,pdf等格式(左 ...

  7. leetcode——262. Trips and Users

    The Trips table holds all taxi trips. Each trip has a unique Id, while Client_Id and Driver_Id are b ...

  8. MVC5+EF6 完整教程17--升级到EFCore2.0

    EF Core 2.0上周已经发布了,我们也升级到core 文章内容基于vs2017,请大家先安装好vs2017(15.3). 本篇文章主要讲下差异点,跟之前一样的就不再重复了. 文章目录(差异点): ...

  9. 微服务时代之2017年五军之战:Net PHP谁先死

    其实我一直是个懒人,开博也有好几年了,但是一直懒得写文章,主要怕打字麻烦, 手机都是用讯飞语音输入的, 可惜博客里面很多专业性的词语,用讯飞也不大好,另外无论在家还是在公司,开个语音一本正经的叽叽叽, ...

  10. vue小组件练习之文字居中对齐组件

    时隔多月,继续学习Vue,这次是一个组件的制作过程 先让我们来看一下组件的预期效果 上图为公司自营的一个微信商城的某一部分截图,可以看到红框内部分的文字多行与单行是居中对齐的,我们现在要做的就是使用V ...