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>