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 ...
随机推荐
- Java微信公众平台开发之公众号支付(微信内H5调起支付)
官方文档点击查看准备工作:已通过微信认证的公众号,必须通过ICP备案域名(否则会报支付失败)借鉴了很多大神的文章,在此先谢过了 整个支付流程,看懂就很好写了 一.设置支付目录 在微信公众平台设置您的公 ...
- 切换Ubuntu系统python默认版本的方法
另附切换系统python默认版本的方法: 先使用命令: update-alternatives --list python 查看python命令的各种可能结果, 例如我的结果: /usr/bin/py ...
- 前端应该知道的Web Components
前端组件化的痛点 在前端组件化横行的今天,确实极大的提升了开发效率.不过有一个问题不得不被重视,拟引入的这些html.css.js代码有可能对你的其他代码造成影响. 虽然我们可以通过命名空间.闭包等一 ...
- 实现Echarts折线图的虚实转换
需求:医院的体温单,在统计体温时,对于正常情况下统计的体温数据,需要显示实线:对于进行物理降温后统计的体温数据,需要显示虚线. 现有的体温单是运用 Echarts 折线图,统一用实线显示.因此在这基础 ...
- Linux学习总结(六)—— CentOS软件包管理:源代码安装
源代码包安装方式相对RPM/YUM安装方式较为复杂,并且安装过程更长,一般只在源码研究的时候才会使用这种方式去编译. 源码安装分为解压缩包.配置信息.编译安装三个步骤,安装地址地址一般是/usr/lo ...
- RoboCup仿真3D TC笔记(2014年合肥中国公开赛 仿真3D比赛环境搭建)
所谓“TC“,就是Technology Committee(技术委员),讲的好像很厉害,实则就一“网管”. TC的技术含量其实不高,但是涉及的东西很多很杂,网上零零散散的都有,在这里我想总的整理一下, ...
- 【Git】自动化Maven项目构建脚本(一)
在公司服务器上搭了个自动化构建环境,一上午写了个构建脚本,现在贴出来给自己看 #!/bin/bash # .配置路径变量 propath=/home/hotspot/.autoBuild/projec ...
- 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) 题解
题目链接:http://codeforces.com/gym/101147 2017/8/27日训练赛,题目情况9/11,Rank 4/79. A. The game of Osho 题意:定义一个子 ...
- VMware Workstation 12 Player之安装林耐斯-Linux Deepin -系统
VMware Workstation 12 Player之安装林耐斯-Linux Deepin -系统... ============= ============= ============= === ...
- 8.23.4 IO-输入输出16个流
字节流: FileInputStream FileInputStream fIn = new FileInputStream("1.avi"); FileOutputStrea ...