欢迎来到天天文库
浏览记录
ID:36291187
大小:19.23 KB
页数:12页
时间:2019-05-08
《java写的生成数独代码(sudoku code generated by java)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、java写的生成数独代码(SudokucodegeneratedbyJava)包装测试;进口java.util.linkedlist;进口java.util.random;/***自动获取数独*@作者huangr2013.02.19*/公共类的蜀都{publicstaticvoidmain(String[]args){蜀都SD=新shudu();initshudu()SD;(1)startshuduSD;}int长度;//长度国际currps;//当前正在处理的位置字节[]num=null;//结果字节[]ANSP=null;//可用解在解集合中的位置字节的[][]ansval=nu
2、ll;//可用解集合随机路=新();公共shudu(){长度=9;}/***初始化数独*/initshudu(){publicvoid//初始化结果如果(数字=NULL){新字节[长度*长度];}ANSP=新的字节长度*[长度];ansval=新的字节长度*[长度][长度];currps=0;//初始化赋值对于(int=i0;i<长度*长度;i++){数字i=0;ANSP[我]=0;对于(int=0;j<长度;j++){ansval[我][J]=0;}}}/***开始进行数独*@param计数需获取数独的个数,1代表所有。*/公共无效startshudu(int数){//当前正在解的
3、结果标记国际currcount=0;//循环获取结果的解而(currcount<计数
4、
5、数==1){//若当前解的位置为0,则获取可用解集合如果(ANSP[currps]==0){getans();}//获取当前可用解个数intANS=getanscount();0/若当前位置为并且解可用解为0,则视为无解,跳出循环结束。如果(currps==0和ANS==0){打破;}elseif(ANSP[currps]==和==0
6、
7、ANS){//若当前解位置为可用解的个数或可用解为0,则返回上一个位置的下一个可用解重新开始Num[currps]=0;ANSP[currps]=0;currps
8、--;继续;}否则{//解可用,赋值setans();ANSP[currps]++;currps++;}如果(长*长度==currps){//若当前位置进行到数独的最大值,打印获取的数独结果,手动返回上一个位置获取下一个不同的数独解。outdata();currcount++;currps--;Num[currps]=0;ANSP[currps]=0;系统,println(“”);}}}/***获取当前位置的所有可用解*/PublicvoidgetAns(){//defaultsettingsallavailablesolutionsFor(bytei=1;i9、+){AnsVal[currPs][i-1]=i;}//currentpositioninthearraylineIntbeginR=currPs/length;Thecurrentpositioninthearray/columnIntbeginC=currPs%length;For(inti=0;i10、thecolumn/deletethesamesetofSolutionsIf(num[length*i+beginC]!=0){AnsVal[currPs][num[length*i+beginC]-1]=0;}}Asmallnumberof9th//IntsubBox=(int)Math.sqrt(length);Inthefirstfewlines/smallhouseIntboxR=beginR/subBox;Locatedinthesmallhouse/columnsIntboxC=beginC/subBox;Thedataintheninth//loop,ifthesol11、utionsetisdeletedFor(inti=subBox*boxR;i
9、+){AnsVal[currPs][i-1]=i;}//currentpositioninthearraylineIntbeginR=currPs/length;Thecurrentpositioninthearray/columnIntbeginC=currPs%length;For(inti=0;i10、thecolumn/deletethesamesetofSolutionsIf(num[length*i+beginC]!=0){AnsVal[currPs][num[length*i+beginC]-1]=0;}}Asmallnumberof9th//IntsubBox=(int)Math.sqrt(length);Inthefirstfewlines/smallhouseIntboxR=beginR/subBox;Locatedinthesmallhouse/columnsIntboxC=beginC/subBox;Thedataintheninth//loop,ifthesol11、utionsetisdeletedFor(inti=subBox*boxR;i
10、thecolumn/deletethesamesetofSolutionsIf(num[length*i+beginC]!=0){AnsVal[currPs][num[length*i+beginC]-1]=0;}}Asmallnumberof9th//IntsubBox=(int)Math.sqrt(length);Inthefirstfewlines/smallhouseIntboxR=beginR/subBox;Locatedinthesmallhouse/columnsIntboxC=beginC/subBox;Thedataintheninth//loop,ifthesol
11、utionsetisdeletedFor(inti=subBox*boxR;i
此文档下载收益归作者所有