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>

 

posted @ 2013-08-08 20:47  SKY_VIEW  阅读(375)  评论(0编辑  收藏  举报