求解数独的计算机程序

求解数独的计算机程序

ID:42046546

大小:125.57 KB

页数:11页

时间:2019-09-06

求解数独的计算机程序_第1页
求解数独的计算机程序_第2页
求解数独的计算机程序_第3页
求解数独的计算机程序_第4页
求解数独的计算机程序_第5页
资源描述:

《求解数独的计算机程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、〃刘天一,2013年1月29日,THU,DPL编程风格比较烂,人家见谅〃划数法解数独,仿照人的思维#include#include#include#includetypedefunsignedintuint;typedefstruct{uintx;uinty;charnum[9];charall;}able;//用于记录可以填充的数FILE*mopen(uintfilenum);//打开文件voidsave(charbuffer[10][10],uintzushu);//显示结果void

2、read(charbuffer]10][10],uintzushu);//读取已知条件voidnumprint(charbuffer[10][10],uintzushu);//显示结果voidmat(charmatnum[9][2],uintx,uinty);〃返回某点所属矩阵的9个点boolok(charbuffer[10][10]);//判断一个排列是否符合规则boolok_mat(charbuffer[10][10],uintmat_x,uintmat_y);//判断一个小矩阵内的9个数是否符合规则voidhuashu1(charbuffer0[10][

3、10],charbuffer[101(1()][10]);//划掉所有数voidhuashuO(charbuf'fer[10][10][10],uintx,uinty,charnum);//划去一个数voidfi!13(charbuffer[10][10][10],uintx,uinty,uintz);〃填充0voidfillable(able*a,charbuffer[10][10][10],charbuffer0[10][10]);//生成记录表,哪些数可以填充booleasyfill(able*a,charbuffer0[101[10],charbuff

4、er[10][10][10]);//简单空格填充inttryfill(able*a,charbuffer[10][10][10],chartrymatf1()][10],uinttrynum);//复杂空格填充尝试uinttrymax(able*a);〃尝试的最人次数(小于,不能小于等于)voidcopy2(charbuffcrO[10][10],chartrymatf10][10]);voidcopy3(charbuffer1[10][10][10],charbuffer2[10][10][10]);voidcopya(able*al,able*a2);in

5、tmain(){〃标记0是质数1合数charbuffer0[10J[10J;charbufferlll0][10][10];ablea[81J;fill3(buffcr1,10,10,10);read(bufferO,O);numprint(buffer(),());huashu1(buffcrO,buffcii);fillable(a,buffer1,bufferO);while(easyfill(a,bufferO,buffer1)){fillable(a,bufferl,buffer());}if(ok(bufferO)){numprint(buffer

6、O,O);save(bufferO,l);printf(,,FINISHEDH);system(”PAUSE");return0;}//uintmax=trymax(a);uinttry0=0;ablenewa[81];charnewmat[10J[10J;charnewbuffer[101fl0]fl0];while(1){copy2(buffer0,newmat);copy3(bufferl.newbuffer);copya(a,newa);if(tryfill(newa,newbuffer,newmat,try()))break;if(ok(

7、newmat)){numprint(newmat,tryO);save(newmat,try());}tryO++;}printf(nFINISHEDM);system(”PAUSE");return0;}voidnum2str(uintx,char*str)uintx2;uintp=0;x2=x;while(x2>=10){str[p]=x2%10;x2=(x2-str[p])/10;str[p]+='O';P++;}str[p]=x2%10+'0*;P++;str[p]=O;}FILE*mopen(uintfilenum){charnumcha

8、r[10];num2str(filen

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。