java解数独.doc
上传人:yy****24 上传时间:2024-09-10 格式:DOC 页数:12 大小:54KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

java解数独.doc

java解数独.doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

packagegxl.shudu;importjava.util.ArrayList;importjava.util.List;/***数独计算的算法*@author高新亮**/publicclassCompute{int[][]a={{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0}};List<ArrayList<Integer>>nums=newArrayList<ArrayList<Integer>>();ArrayList<Integer>nums2=null;ArrayList<Integer>nums3=null;Shudushudu=null;privateStringss="";publicCompute(Shudus){shudu=s;}publicStringgetSs(){returnss;}publicvoidsetSs(Stringss){this.ss=ss;}publicvoidlaunchCompute(){//f2();//shudu.shownum();}publicStringchoice(int[][]a,inti,intj){int[]b={1,2,3,4,5,6,7,8,9};for(intk=0;k<a[i].length;k++){if(a[i][k]!=0){for(intm=0;m<b.length;m++){if(a[i][k]==b[m]){b[m]=0;}}}}for(intk=0;k<a[j].length;k++){//因为是行列数相等,所以认为本行数就是本列数if(a[k][j]!=0){for(intm=0;m<b.length;m++){if(a[k][j]==b[m]){b[m]=0;}}}}intii=i/3;intjj=j/3;int[]aa=newint[9];intt=0;for(intk=ii*3;k<(ii+1)*3;k++){for(intm=jj*3;m<(jj+1)*3;m++){aa[t]=a[k][m];t++;}}for(intk=0;k<aa.length;k++){if(aa[k]!=0){for(intm=0;m<b.length;m++){if(aa[k]==b[m]){b[m]=0;}}}}for(intm=0;m<b.length;m++){if(b[m]!=0){ss+=(""+b[m]);}}returnss;}publicbooleantorf(int[][]a,inti,intj,intb)//验证b是否能够在数组a的(i,j)位置上{booleanline=true;booleanrow=true;booleancheck=true;for(intk=0;k<9;k++)//验证是否能在这一行上{if(a[i][k]==b)line=false;}for(intk=0;k<9;k++)//验证是否能在这一列上{if(a[k][j]==b)row=false;}intii=i/3;intjj=j/3;int[]aa=newint[9];intt=0;for(intk=ii*3;k<(ii+1)*3;k++){for(intm=jj*3;m<(jj+1)*3;m++){aa[t]=a[k][m];t++;}}//将(i,j)所在的九宫格赋值到数组aa中fo