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
可以看出这是一个合乎规定的数独,接下来就是代码了,给自己加油
sudoku--设想的更多相关文章
- Sudoku Generator
Sudoku 算法 标签(空格分隔): 软工实践 设想:通过第一行,来生成2, 3行的排列,再通过1 - 3 生成4 - 6排列. 2 3 行的生成由上一行生成 公式为$grid[i][j] = gr ...
- 关于Hadoop用户体系的设想(胡思乱想)
关于Hadoop的用户体系设计设想 Hadoop并没有一个完整的用户体系,其权限控制的对象,主要是Linux的其它用户(即非安装Hadoop的用户),控制方式也和Linux的文件权限很像,目前权限控制 ...
- Leetcode 笔记 36 - Sudoku Solver
题目链接:Sudoku Solver | LeetCode OJ Write a program to solve a Sudoku puzzle by filling the empty cells ...
- [LeetCode] Sudoku Solver 求解数独
Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...
- [LeetCode] Valid Sudoku 验证数独
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- LeetCode 36 Valid Sudoku
Problem: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board ...
- 【leetcode】Valid Sudoku
题目简述: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board cou ...
- ACM : POJ 2676 SudoKu DFS - 数独
SudoKu Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu POJ 2676 Descr ...
- ACM: ICPC/CCPC Sudoku DFS - 数独
Sudoku Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other) Total Submis ...
- Leetcode: Sudoku Solver
July 19, 2015 Problem statement: Write a program to solve a Sudoku puzzle by filling the empty cells ...
随机推荐
- 解决百度BMR的spark集群开启slaves结点的问题
前言 最近一直忙于和小伙伴倒腾着关于人工智能的比赛,一直都没有时间停下来更新更新我的博客.不过在这一个过程中,遇到了一些问题,我还是记录了下来,等到现在比较空闲了,于是一一整理出来写成博客.希望对于大 ...
- python_装饰器_语法糖
什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...
- MySQL 6.0安装图解
MySQL 6.0安装图解 由于免费,MySQL数据库在项目中用的越来越广泛,而且它的安全性能也特别高,不亚于oracle这样的大型数据库软件.可以简单的说,在一些中小型的项目中,使用MySQL ,P ...
- jQuery.ajax success 与 complete 区别
作者QQ:1095737364 QQ群:123300273 欢迎加入! 天天用,不知所以然: $.ajax({ type: "post", u ...
- Python第一行代码
Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...
- QTextEdit控件使用
QTextEdit控件使用 QTextEdit *mpContentTextEdit = new QTextEdit(this); //设置占位符文本 mpContentTextEdit->se ...
- iOS 10 UserNotification框架解析 – 本地通知
iOS 10以前的通知比较杂乱,把本地通知和远程通知分开了,诞生了许多功能类似的API,很容易让初学者犯迷糊.而iOS 10的通知把API做了统一,利用独立的UserNotifications.fra ...
- 理解最基本的Vue项目
上一篇<Vue开发环境搭建及热更新>,我们讲解了vue开发环境的搭建还有一些小问题,接下来我们来讲解一下这个界面是如何形成的. 在开始讲之前,我们先来看看我们上一篇所谓的项目目录里面到底放 ...
- nodejs之express4x
学习node好榜样!前阵子看了php,那个模块化编译真的好棒.然而php学习起来不是一般的记不住,毕竟和js还是有不同的.于是转移到了node.看到熟悉的js脚本,心里踏实多了. 话不多讲,php我也 ...
- MyEclipse 护眼配色
因为长时间对着电脑,白底看着老累眼,所以想把myeclipse全部改成VS的黑主题,但最终无功而返.(读者有修改方案可以推荐给我哈,在此先谢谢了) 除了黑底的颜色主题,其实豆沙绿也是挺柔和的,下面是豆 ...