var arry= new Array();
var nums= new Array();
var snum;
function numchain()
{
snum=0;
for(var i=0;i<9;i++)
{
nums[i]=new Array();
for(var j=0;j<9;j++)
{ if($("#mytb").children().eq(0).children().eq(i).children().eq(j).html()=="")
{
nums[i][j]=0;
arry[snum]=new Array();
arry[snum][0]=i;
arry[snum][1]=j;
snum++;
}
else
{
nums[i][j]=parseInt($("#mytb").children().eq(0).children().eq(i).children().eq(j).html());
} } } }
function fill()
{
for(var i=0;i<9;i++)
{
for(var j=0;j<9;j++)
{
$("#mytb").children().eq(0).children().eq(i).children().eq(j).html(nums[i][j]);
} } }
//解数独--------------------------------------------------------------------------------------
function sukudu()
{
numchain();
alert(snum+" cells to be filled.");
for(var i=0;i<snum;i++)
{
if(check(arry[i][0],arry[i][1],nums[arry[i][0]][arry[i][1]]+1)==0)i=i-2;
if(i==-2){alert("No solution!");break;}
}
fill();
}
//--------------------------------------------------------------------------------------------
//获取可用数字
function check(row,column,start)
{
for (var i=start;i<10;i++)
{
if(checkRC(row,column,i)==true && checkS(row,column,i)==true){nums[row][column]=i;return i;}
}
nums[row][column]=0;
return 0;
} //行列检查
function checkRC(row,column,value)
{
for (var i=0;i<9;i++)
{
if(nums[row][i]==value)return false; if(nums[i][column]==value)return false;
}
return true;
}
//方块检查
function checkS(row,column,value)
{
for (var i=0;i<3;i++)
{
for(var j=0;j<3;j++)
{
if(nums[parseInt(row/3)*3+i][parseInt(column/3)*3+j]==value)return false;
}
}
<table id="mytb" class="tb"  contenteditable="true"><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></table>

Jquery暴力解数独的更多相关文章

  1. 使用python解数独

    偶然发现linux系统附带的一个数独游戏,打开玩了几把.无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了. 于是就打算借助计算机的强大运算力来暴力解数独,还是很有乐趣的. 下面就记录一下我写 ...

  2. 用C++实现的解数独(Sudoku)程序

    我是一个C++初学者,控制台实现了一个解数独的小程序. 代码如下: //"数独游戏"V1.0 //李国良于2016年11月11日编写完成 #include <iostream ...

  3. LeetCode37 使用回溯算法实现解数独,详解剪枝优化

    本文始发于个人公众号:TechFlow,原创不易,求个关注 数独是一个老少咸宜的益智游戏,一直有很多拥趸.但是有没有想过,数独游戏是怎么创造出来的呢?当然我们可以每一关都人工设置,但是显然这工作量非常 ...

  4. hdu 3111 DLX解数独

    思路:裸的DLX解数独.关键是建图,感觉还不如写个dfs直接,DLX写这个的代码很烦. #include<set> #include<map> #include<cmat ...

  5. 【原创】一个基于简单剪枝的DFS解数独程序

    问题来源:leetCode Sudoku Solver Write a program to solve aSudoku puzzle by filling the empty cells. Empt ...

  6. [leetcode]37. Sudoku Solver 解数独

    Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy  ...

  7. java解数独

    先输入要解的数独,采用多维数组来保存其中的值,未填数字的地方,初始化为0,然后采用递归的方法来解数独. 直接上代码: /** * * @author walker * */ public class ...

  8. 解数独(Python)

    0.目录 1.介绍 2.一些通用函数 3.全局变量(宏变量) 4.数独预处理(约束传播) 5.解数独(深度优先搜索+最小代价优先) 6.主函数 7.总代码 1.介绍 数独是一个非常有趣味性的智力游戏, ...

  9. [LeetCode] Sudoku Solver 解数独,递归,回溯

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

随机推荐

  1. (转)ASP.NET(C#) 读取EXCEL ——另加解决日期问题

    使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可. 一 在D盘创建excel文件test.xls: 二 将工作表Sheet1的内容读取到DataSet string ...

  2. ArrayList的使用方法【转载】

    *** Source URL: http://i.yesky.com/bbs/jsp/view.jsp?articleID=889992&forumID=150 *** 1.什么是ArrayL ...

  3. http请求利器: 今天配置出了RESTClient,用MAVEN构建了UI运行包

  4. 我与python3擦肩而过(三)—— 我去。。又是编码问题——urllib.parse.unquote

    记得初学python时就学的爬虫,经常遇到编码问题(其实在python3里面编码问题已经很少了...),用requests库就挺方便解决这些问题的.近来有共同学习python的程序员写了个电子书网站, ...

  5. mac下U盘装机系统的制作(命令行)

    1,不插入U盘和插入U盘分别命令检测硬盘,确定要制作的U盘号:diskutil list 2,卸载usb盘,不推出,diskutil umountDisk /dev/disk1 3,将dmg写入U盘, ...

  6. PE文件格式

    以下内容摘录自<加密与解密>: 为了在PE文件中避免有确定的内存地址,出现了相对虚拟地址(RVA)的概念.RVA只是内存中的一个简单的相对于PE文件装入地址的偏移位置.它是一个“相对”地址 ...

  7. 关于linux python vim的一些基础知识(很零散)

    清空文件夹filenmae下所有文件 rm filename/* vim复制大量代码段 num+yy 从光标起始处复制num个数行 然后 python: 设置中断 1.from IPython imp ...

  8. parse,tryparse区别

    Convert.ToInt32.int.Parse(Int32.Parse).int.TryParse.(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢? Convert.ToI ...

  9. Magento速度优化

    一.Magento Compiler可以提高 25% 到 50% 速度 Magento的性能一直是大家比较关心的焦点,现在Magento最新的版本 1.3.2.2 增加了 Magento Compil ...

  10. MINIX3 进程调度分析

    MINIX3 进程调度分析  5.1MINIX3 进程调度概要  MINIX3 的进程调度还是非常简单的,调度算法是非常短小的,其目的就是体现 了一个简单和高效的设计原则,当然简单和高效其实很难并存, ...