求解数独fortran程序

求解数独fortran程序

ID:30433429

大小:75.54 KB

页数:5页

时间:2018-12-29

求解数独fortran程序_第1页
求解数独fortran程序_第2页
求解数独fortran程序_第3页
求解数独fortran程序_第4页
求解数独fortran程序_第5页
资源描述:

《求解数独fortran程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、求解数独Fortran程序!*******************************************************************!程序说明:!主程序采用回溯法,先按顺序将每个未知数的位置坐标存入x、y数组中,!共有step个未知数。每个位置从1开始试验,若满足条件则t=t+1,试验!下一个未知数;若1~9均不能满足条件,则回溯到上一个未知数t=t-1,!将试验值+1,再进行循环。当循环到最后一个未知数时,若满足条件则输!出解;若回溯到第一个未知数时,填入1~9均不

2、能满足条件,则数独无解。!子程序用来判断试验值是否满足条件。!m,n=未知数在校宫格中的位置,step=未知数个数,t=试验值在未知数中!的次序,A=存放数独值的数组,x,y=存放未知数坐标的数组!********************************************************************programsudokuimplicitnoneintegeri,j,m,n,k,step,tintegerA(1:9,1:9),x(81),y(81)logical

3、flagt=0open(8,file='soku.txt')doi=1,9!读入数独初值,未知数赋0doj=1,9read(8,'(i2)')A(i,j)if(A(i,j)==0)thent=t+1step=t!计算未知数个数x(t)=iy(t)=jendifenddoenddoclose(8)print'(2x,9i2)',((A(i,j),j=1,9),i=1,9)t=1print*,stepdowhile(t<=step)i=x(t)j=y(t)if(A(i,j)==9)then!若回溯到的

4、上一个未知数值为9,则继续往前回溯t=t-2A(i,j)=0goto200endifdok=A(i,j)+1,9A(i,j)=kcalljudge(i,j,k,flag,A)!判断是否满足条件,若满足,退出循环,试验下一个未知数if(flag.eqv..true.)thenexitendifif(k==9.and.(flag.eqv..false.))then!若1~9均不能满足条件,回溯上一个未知数t=t-2A(i,j)=0endifenddo200t=t+1if(t==step+1)thenp

5、rint*,'本数独解为:'exitendifif(t<=0.and.(flag.eqv..false.))thenprint*,'本数独无解,再检查一下题目吧!'exitendifenddoprint'(2x,9i2)',((A(i,j),j=1,9),i=1,9)10format(1x,3I3)End子程序:subroutinejudge(vi,vj,k,flag,A)implicitnoneintegeri,j,vi,vj,k,m,nlogicalflagintegerA(1:9,1:9)f

6、lag=.true.m=mod(vi,3)+3*int(1-mod(vi,3)/3.)n=mod(vj,3)+3*int(1-mod(vj,3)/3.)doi=1,9!判断行条件if(A(i,vj)==k.and.i/=vi)thenflag=.false.endifenddodoj=1,9!判断列条件if(A(vi,j)==k.and.j/=vj)thenflag=.false.endifenddodoi=vi-m+1,vi-m+3!判断小宫格条件doj=vj-n+1,vj-n+3if((i/=

7、vi.or.j/=vj).and.A(i,j)==k)thenflag=.false.endifenddoenddoend输入数据格式示例:000000800400208051083900007040500082005000400800000000000000000000100000000000000每行一个数据,共82行。输出示例:126357849479268351583914267341576982265891473897423516632745198758139624914682735

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

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

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