Jquery暴力解数独
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暴力解数独的更多相关文章
- 使用python解数独
偶然发现linux系统附带的一个数独游戏,打开玩了几把.无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了. 于是就打算借助计算机的强大运算力来暴力解数独,还是很有乐趣的. 下面就记录一下我写 ...
- 用C++实现的解数独(Sudoku)程序
我是一个C++初学者,控制台实现了一个解数独的小程序. 代码如下: //"数独游戏"V1.0 //李国良于2016年11月11日编写完成 #include <iostream ...
- LeetCode37 使用回溯算法实现解数独,详解剪枝优化
本文始发于个人公众号:TechFlow,原创不易,求个关注 数独是一个老少咸宜的益智游戏,一直有很多拥趸.但是有没有想过,数独游戏是怎么创造出来的呢?当然我们可以每一关都人工设置,但是显然这工作量非常 ...
- hdu 3111 DLX解数独
思路:裸的DLX解数独.关键是建图,感觉还不如写个dfs直接,DLX写这个的代码很烦. #include<set> #include<map> #include<cmat ...
- 【原创】一个基于简单剪枝的DFS解数独程序
问题来源:leetCode Sudoku Solver Write a program to solve aSudoku puzzle by filling the empty cells. Empt ...
- [leetcode]37. Sudoku Solver 解数独
Write a program to solve a Sudoku puzzle by filling the empty cells. A sudoku solution must satisfy ...
- java解数独
先输入要解的数独,采用多维数组来保存其中的值,未填数字的地方,初始化为0,然后采用递归的方法来解数独. 直接上代码: /** * * @author walker * */ public class ...
- 解数独(Python)
0.目录 1.介绍 2.一些通用函数 3.全局变量(宏变量) 4.数独预处理(约束传播) 5.解数独(深度优先搜索+最小代价优先) 6.主函数 7.总代码 1.介绍 数独是一个非常有趣味性的智力游戏, ...
- [LeetCode] Sudoku Solver 解数独,递归,回溯
Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...
随机推荐
- Oracle GoldenGate 12c中的协同交付(Coordinated Delivery)
OGG 12c中,并行交付有2种模式:集成交付.协同交付.不过集成交付只能针对目标端是oracle数据库(有版本要求)使用,而协同交付则可以在非oracle数据库上使用. 先来看2个问题, l 为什么 ...
- SpringMvc异常
局部异常:在controller内部写一个处理异常的方法,注解ExceptionHandler(value={自己弄的异常class}) 这样发生value里面的类的异常,就可以执行这个方法,然后往r ...
- python练习——最长的递减子序列
题目: 求一个数组的最长递减子序列比 , 如随机生成一组序列 {8,9,6,3,6,2,3,4} 求得最长递减序列 {9,8,6,4,3,2} list=[3,3,3,3,6,2,3,4] //冒 ...
- 2013年8月份第2周51Aspx源码发布详情
上班族网站(毕设)源码 2013-8-16 [VS2010]源码描述:自己做的毕业设计,上班族网站项目是专门针对上班族群体设计和开发的网站项目.该网站主要涵盖了论坛平台,笑话模块,名言模块,资讯模块 ...
- NorFlash和NandFlash区别
Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位 ...
- JQuery源码分析(五)
分离构造器 通过new 操作符构建一个对象,一般经过四部: A.创建一个新对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) C.执行构造函数中的代码 D.返回这 ...
- jqGrid详解及高级应用(十四)
一:jqGrid 是一个用来显示网格数据的jQuery插件,文档比较全面,附带中文版本. 二:官方主页http://www.jqgrid.com/目前最新版本:jqGrid 3.7 Beta在线文档 ...
- Xcode7推出的新优惠:免证书测试
1.准备 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题:could not find developer disk image 2.首先先安装Xco ...
- Android Glide加载图片时转换为圆形、圆角、毛玻璃等图片效果
Android Glide加载图片时转换为圆形.圆角.毛玻璃等图片效果 附录1简单介绍了Android开源的图片加载框架.在实际的开发中,虽然Glide解决了快速加载图片的问题,但还有一个问题悬 ...
- 数据库 SQL优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...