数独问题

问题描述

大虾们救救我吧我这个都作4天啦,一点进展都没有谁做个数独,给点好的建议,或者好的代码

解决方案

解决方案二:
前段时间无聊,写了个数独得破解软件,如果你有兴趣的,你可以把题目贴出来,我帮你搞下?呵呵
解决方案三:
关注。。。。。。
解决方案四:
是那种9个格子、怎么填写数字相加都一样的东西不?
解决方案五:
问个无关问题国内也玩那个?一直以为日本人才玩
解决方案六:
不用相加,只要每行(9行),每列(9列),每区(9区)的数字都不一样就行了(1~9之间的数)没写过,帮你想想~~~
解决方案七:
usingSystem;usingSystem.IO;usingSystem.Collections.Generic;namespaceSkyiv.Ben.Etc{sealedclassSudoku{byte[,]input,output;intsteps=0;publicSudoku(TextReaderreader){input=newbyte[9,9];for(inty=0;y<9;){strings=reader.ReadLine();if(s==null)break;s=s.Replace('.','0');intx=0;for(inti=0;i<s.Length;i++)if(Char.IsDigit(s,i)&&x<9)input[x++,y]=(byte)(s[i]-'0');if(x!=0)y++;}}publicvoidOut(TextWriterwriter){Compute(input);Out(writer,output);}voidOut(TextWriterwriter,byte[,]output){for(inty=0;y<=output.GetLength(1);y++){if(y%3==0)writer.WriteLine("+---+---+---+");if(y>=output.GetLength(1))break;for(intx=0;x<=output.GetLength(0);x++){if(x%3==0)writer.Write('|');if(x>=output.GetLength(0))break;writer.Write((output[x,y]==0)?'.':(char)(output[x,y]+'0'));}writer.WriteLine();}}boolCompute(byte[,]input){List<byte[,]>list=StepIt(input);if(list==null)returntrue;foreach(byte[,]tempinlist)if(Compute(temp))returntrue;returnfalse;}//returnnullforfinishList<byte[,]>StepIt(byte[,]input){if(steps++>100000)thrownewException("太复杂了");output=input;inttheX=-1,theY=-1;byte[]theDigits=null;for(inty=0;y<input.GetLength(1);y++){for(intx=0;x<input.GetLength(0);x++){if(input[x,y]!=0)continue;byte[]digits=GetDigits(input,x,y);if(digits.Length==0)returnnewList<byte[,]>();if(theDigits!=null&&theDigits.Length<=digits.Length)continue;theX=x;theY=y;theDigits=digits;}}if(theDigits==null)returnnull;List<byte[,]>result=newList<byte[,]>();foreach(bytedigitintheDigits){byte[,]temp=(byte[,])input.Clone();temp[theX,theY]=digit;result.Add(temp);}returnresult;}byte[]GetDigits(byte[,]input,intx,inty){bool[]mask=newbool[10];for(inti=0;i<9;i++){mask[input[x,i]]=true;mask[input[i,y]]=true;}for(inti=x/3*3;i<x/3*3+3;i++)for(intj=y/3*3;j<y/3*3+3;j++)mask[input[i,j]]=true;List<byte>list=newList<byte>();for(inti=1;i<mask.Length;i++)if(!mask[i])list.Add((byte)i);returnlist.ToArray();}}}

时间: 2024-10-31 10:26:38

数独问题的相关文章

Symbian学习笔记(8)——再尝试着做一个数独游戏

仍是做一个同样界面同样功能的数独游戏,但是所花费的时间远远超出我用Android或者J2ME来做同样的事情,当然运行效率也很明显(我将J2ME实现的数独放在N73上跑过,因为重绘屏幕的代码没有优化,所以效果不好,但同样的算法在BREW或者Symbian上就跑得相当顺畅). 这次我主要谈谈在做这个 Symbian版本中遇到的几个问题,希望以后自己不要再犯同样的错误了. 1.多视图的应用程序框架的问题 我用的是Carbide C++ IDE环境,不知道为什么不能生成多视图的架子,所以只能在Hello

ASP.NET 2.0下的数独解算器

数独游戏 在9x9的方格内进行, 分为3x3的小方格,被称为"区". 数独游戏首先从已经填入数字的格子开始. 数独游戏的目的是根据下列规则,用1至9之间的数字填满空格: 每个数字在每一行.每一列和每一区只能出现一次. 我在 Linux 服务器(请参见"在 Linux 下运行 ASP.NET 2.0")上用 ASP.NET 2.0 实现了一个数独解算器. http://www.sudoku.name 网站上也有一个用户界面相当不错的"数独解算器"

python实现数独算法实例

 本文实例讲述了python实现数独算法的方法.分享给大家供大家参考.具体如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

数独解题程序

一个假期过去,明显编程水平大降,键盘都敲不好了,于是就想着恢复一下.怎么恢复呢?写个数独解题程序吧. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

回溯 搜索 数独 pascal 求高手赐教

问题描述 回溯 搜索 数独 pascal 求高手赐教 我的代码 请问那里有问题 答案总是错 谢谢 靶形数独 (sudo.pas/c/cpp) [问题描述] 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z博士请教,Z博士拿出了他最近发明的"靶形数独",作为这两个孩子比试的题目. 靶形数独的方格同普通数独一样,在9格宽×9格高的大九宫格中有9个3格宽×3格高的小九宫格(用粗黑色线隔开的).在

递归-最蠢数独穷举算法,就是不出结果,求解

问题描述 最蠢数独穷举算法,就是不出结果,求解 用C++/C写了个数独暴力破解算法,运用递归来破解数独 搞了半天不知道错哪..求前辈指教.. PS:数独就是9×9=81个格子 要把9组1~9一共81个数字填入格子中 要求: 每一行不能有相同的数 每一列不能有相同的数 每一小宫(9个格子)不能有相同的数 #include <iostream> using namespace std; void Sudoku(int x,int y); //放数 int Judge(int x,int y,int

LeetCode 37 Sudoku Solver(求解数独)(*)

翻译 写一个程序来通过填充空格求解数独. 空格用'.'表示. 你可以假定这里只有唯一解. (示例图片看下文) 原文 代码 这道题我没写--不过为了博客的连续性,先凑一篇占个位置,以后再修改. class Solution { public: bool col[10][10],row[10][10],f[10][10]; bool flag = false; void solveSudoku(vector<vector<char>>& board) { memset(col,

利用Android做一个数独游戏

问题描述 利用Android做一个数独游戏 如何在Android中绘制出数独游戏九宫格的画面?是在Java代码中编写?数独游戏的算法如何实现 解决方案 开源项目opensudokuhttp://code.google.com/p/opensudoku-android/

java算法之数独游戏揭秘?

问题描述 java算法之数独游戏揭秘? 数独游戏的基本解法? 解决方案 Java 8支持Stream API和Lambda表达式,所以和C#写起来几乎是一样的. 解决方案二: 只要穷举即可.http://bbs.csdn.net/topics/390039859 解决方案三: 请指教 /* * 文 件 名: A.java * 版 权: . Copyright YYYY-YYYY, All rights reserved * 描 述: <描述> * 修 改 人: ShangZhang * 修改时

Sudokuki 1.0.A30发布 数独游戏

Sudokuki是一个图形化的数独游戏.它为您提供了最困难的数独网格.它可以形成一个数独.播放数独和打印数独. Sudokuki 1.0.A30这个版本在工具栏上增加了一个语言选择的对话框图标.重新设定了编辑和帮助菜单. 下载地址: http://nchc.dl.sourceforge.net/project/sudokuki/sudokuki/1.1/http://www.aliyun.com/zixun/aggregation/1541.html">Alpha/sudokuki-1.0