数独怎么算中虚线框之和怎么算

认识数独_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||文档简介
&&非​常​不​错
大小:3.08MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢数独是怎么算出来的_百度知道
数独是怎么算出来的
RT 我问的是 怎么解 不如 9个格的
9其中X是怎么算出来的
提问者采纳
8,7这样是不能算出来的,5,8,2,7,9(一个数只能填一个格,6,2,4,4,3,不能重复)横九个格填 1,2,8,3,5,6,要大九宫(9*9)才能算出来的规则是 横九个格填 1,9(一个数只能填一个格,5,3,7,5,2,4,6,不能重复)竖九个格填 1,4,不能重复)小九宫(3*3 你给的就是小九宫)九个格填 1,6,8,9(一个数只能填一个格,3,不能重复)上面的小九宫 2 3 4 7 9出现了 余下的只能填1 5 6 8了,7,9(一个数只能填一个格
其他类似问题
194人觉得有用
为您推荐:
其他3条回答
样的话怎么填都可以的,一般数独都是81个格子,那里的内容很详细。你可以在百度的百科上找到“数独”的词条
数独的话 要看每行每列9个数字单单9个格子做不出的
下载知道APP
随时随地咨询
出门在外也不愁数独游戏怎样算成功_百度知道
数独游戏怎样算成功
数独游戏怎样算成功
之前大概问过一个学数学的同学,他说一般是直接用程序作出一个完整9*9格子,然后抠掉一部分数字。
可这只是技巧呀
来自团队:
为您推荐:
数独游戏的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁数独——数独一共有多少种?写出详细计算步骤
提问:级别:幼儿园来自:山西省忻州市
回答数:1浏览数:
数独——数独一共有多少种?写出详细计算步骤
数独一共有多少种?写出详细计算步骤
&结束时间: 13:42:24
&如果有了满意的回答请及时采纳,不要辜负了回答者 
回答:级别:高三 15:20:23来自:上海市
合格的数独是有解,而解是唯一解
一般是运用回溯演算法,这是试误法,通常是以电脑程序检查。
以人去检查不如程序检查快!
著名的程序是 爱尔兰数学教授麦盖尔 博士(Gary McGuire)的无偿程序 SOLVER.EXE ,计算机专业的学生都可以写的出这个程序,但是程序的执行速度仍有优劣之分。
合格的数独解(Sudoku grids )有 6,670,903,752,021,072,936,960 这是这是贝米耳(Stanley E. Bammel)与罗思坦(Jerome Rothstein)二位数学家计算除来的,有专门研究的报告
由于同一个数独可以变形,例如左右纵列交换、上下横行交换、数字代码交换(例如1和5交换,2和8、3和4...)重复前面几次之后,就分不清是来自同一个数独,但是专家们还是有法子的。
澳大利亚的大学(The University of Western Australia )教授Gordon Royle 博士利用图形理论,发展出辨识数独变形的方法。将数独谜题利用 Nauty 程序图形转化,然后作比对。
如果考虑经过变形的数独不算是新数独,那么数独解的数目会少很多!
这些都是数独专业的研究,有数学、计算机、...等专家们在研究,
特别刊载于专业学报
总回答数1,每页15条,当前第1页,共1页
提问者请及时处理问题
可输入个汉字
上传图片:
参考文献资料:
可输入个汉字
- 如果您的回答内容参照了其他文献资料,就请标明其出处;- 如有知识产权等纠纷,由回答者本人承担相应法律责任。
同类疑难问题
最新热点问题13182人阅读
学习笔记(8)
&&&&&&&& 先简单的介绍一下数独。来自维基百科的玩法解释:在9&9格的大九宫格中有9个3&3格的小九宫格,并提供一定数量的数字。根据这些数字,利用逻辑和推理,在其它的空格上填入1到9的数字。每个数字在每个小九宫格内只能出现一次,每个数字在每行、每列也只能出现一次。
&&&&&& 那么一共多少个数独矩阵呢?大家可以参看这个链接。There are
Sudoku grids (Bertram Felgenhauer and Frazer Jarvis)。这么个数量级,真是吓人,没仔细学习之前我就以为仅有那么几个呢。
&&&&&&&& 最近考研实在是无聊,总是会萌生一些,奇怪的想法,突然看着线性代数就想到了数独矩阵的问题,于是决定试着自己生成几个玩玩。
&&&&&&&& 网上有不少写好的生成算法,我找到的几个大概的实现思路都是现在第一行生成一组1-9不重复的数字,然后第二行开始不停的验证,不停的回退,然后再不停的验证,这种方法有个很好听的名字,叫&回溯法&。如这位大哥,执行一下他给的源代码,效率真是不敢恭维,能不能得出结果了真得看人品。一些提供数独游戏的网站,看他的解释是说,没有做到随机生成,而是当你访问的时候去库里读一个出来给浏览者玩,这种方法也是不可取。如果把这么多个矩阵都存到数据库里去,我勒个去,多大的硬盘?各位看官若有兴趣,请帮忙算一下。于是我在想,如何写一个算法高效率的生成一个数独矩阵呢?
&&&&&&&& 数独的总个数是这么得出来的。9!&722&27& 27,704,267,971=6,670,903,752,021,072,936,960(约有6.67&10的21次方)种组合,2005年由Bertram Felgenhauer和Frazer Jarvis计算出该数字,如果将重复(如数字交换、对称等)不计算,那么有5,472,730,538个组合。那么有趣的来了,有个9!=362880,这个就等于9的全排列,是不是可以从这里做突破口呢?如果我可以随机的生成362880个完整的数独矩阵,然后随机的每行挖去4到5个那就是/120*9*362880=个,这个数字够大家有生之年玩的了。
&&& 于是我产生了一个看上去比较WS的算法,思路如下,我先写一个数独出来,用二维数组A表示,然后再生成一个乱序的1-9一维数组,用一维数组b表示。遍历这个A数组,在b中找到A数组中当前值所在的位置,然后将b数组中下一个位置的数字赋给A的当前值,目的就是用b数组给A数组中的所有的值,循环的变一下。注意这个b数组的可能性恰好是9的全排列,也就是可以生成362880个数组,也即是生成362880个不同的随机矩阵。我用JAVA实现了我的想法,证明是比较可行,如果你的机器不是上个世纪的古董的话,1秒钟内出一个矩阵是没有问题的。程序里用到的数据矩阵很容易就写出来了,中间的那个九宫格是1-9的顺序排列,第五行第五列都是有规律,然后一个九宫格一个九宫格的填充。
&&& 不叨叨,直接上源码:
import java.awt.L
import java.util.ArrayL
import java.util.R
* @author 武鹏
* @version:1.0
* @since 日22:58:43
* @&p&快速生成数独算法&/p&
* @param args
public class Sudoku {
*&p&打印二维数组,数独矩阵 &/p&
public static void printArray(int a[][])
for (int i = 0; i & 9; i++) {
for (int j = 0; j & 9; j++) {
System.out.print(" "+a[i][j]);
if (0==((j+1)%3)) {
System.out.print(" ");
System.out.println();
if(0==((i+1)%3))
System.out.println();
* &p&产生一个1-9的不重复长度为9的一维数组 &/p&
public static ArrayList&Integer& creatNineRondomArray()
ArrayList &Integer&list = new ArrayList&Integer&();
Random random=new Random();
for (int i = 0; i & 9; i++) {
int randomNum=random.nextInt(9)+1;
while (true) {
if (!list.contains(randomNum)) {
list.add(randomNum);
randomNum=random.nextInt(9)+1;
System.out.println("生成的一位数组为:");
for (Integer integer : list) {
System.out.print(" "+integer.toString());
System.out.println();
*&p&通过一维数组和原数组生成随机的数独矩阵&/p&
*遍历二维数组里的数据,在一维数组找到当前值的位置,并把一维数组
*当前位置加一处位置的值赋到当前二维数组中。目的就是将一维数组为
*依据,按照随机产生的顺序,将这个9个数据进行循环交换,生成一个随
*机的数独矩阵。
public static void creatSudokuArray(int[][]seedArray,ArrayList&Integer& randomList)
int flag=1;
for (int i = 0; i & 9; i++) {
for (int j = 0; j & 9; j++) {
for (int k = 0; k & 9; k++) {
if(seedArray[i][j]==randomList.get(k))
seedArray[i][j]=randomList.get((k+1)%9);
System.out.println("处理后的数组");
Sudoku.printArray(seedArray);
public static void main(String[] args) {
int seedArray[][]={
{9,7,8,3,1,2,6,4,5},
{3,1,2,6,4,5,9,7,8},
{6,4,5,9,7,8,3,1,2},
{7,8,9,1,2,3,4,5,6},
{1,2,3,4,5,6,7,8,9},
{4,5,6,7,8,9,1,2,3},
{8,9,7,2,3,1,5,6,4},
{2,3,1,5,6,4,8,9,7},
{5,6,4,8,9,7,2,3,1}
System.out.println("原始的二维数组:");
Sudoku.printArray(seedArray);
ArrayList&Integer& randomList=Sudoku.creatNineRondomArray();
Sudoku.creatSudokuArray(seedArray, randomList);
后记:经多次测试,出结果是没问题的,但是思路上有点不是太正式的意思,怎么看怎么感觉有点不完美(本人是个轻微的完美主义者),但是效率还是让我很欣慰的。还有,以此思路逆转,是否可以做一个解数独矩阵的算法出来,本人现在缠身的事情真是太多,实在是没时间,请有兴趣有时间的同志们,帮忙实现一下。
&&& 希望这个东西能对大家有点帮助,写的不对的地方,请大家给予指正。
&&& 转载请注明出处,谢谢!交流邮箱。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:71581次
积分:1050
积分:1050
排名:千里之外
原创:26篇
评论:82条
(1)(1)(1)(1)(2)(1)(1)(2)(10)(4)(1)(1)(1)}

我要回帖

更多关于 最难数独 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信