简单的数独游戏求解程序(matlab).doc

简单的数独游戏求解程序(matlab).doc

ID:56718888

大小:70.00 KB

页数:2页

时间:2020-07-06

简单的数独游戏求解程序(matlab).doc_第1页
简单的数独游戏求解程序(matlab).doc_第2页
资源描述:

《简单的数独游戏求解程序(matlab).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、functionS=sudoku(A)%SUSOKU0功能:求解数独%调用格式:S=sudoku(A)%A--需判断的数独矩阵(9×9),空格用0替代%S--数独的解%A=xlsread('sudoku.xls','A11:I19');k=1;s=1;A1=cell(9);C=cell(9);n0=0%n0>2A_ti=A;%原始题目while1[d,p]=find_variable(A);C{p(1),p(2)}=d;n=length(d);ifn>n0n0=nendifn>1k1(s)=9*(p(2)-1)

2、+p(1);s=s+1;A1{p(1),p(2)}=A;elseifn==0s=s-1;ifA(k1(s))==C{k1(s)}(end)s=s-1;endk=k1(s);%breakA=A1{k};A(k)=C{k}(2);%目前为止没有超过2个可选元素的continueendA(p(1),p(2))=C{p(1),p(2)}(1);k=k+1;ifsum(sum(ceil(A/9)))==81%判断是否填完了breakend%ifsum(sum(ceil(A/9)))==81%break%endendS=A

3、%A=xlswrite('sudoku.xls',S,'k11:S19');function[D,P]=find_variable(A)%Find_variable功能:找出数独矩阵中可填值最少的位置及可填值%调用格式:[D,P]=find_variable(A)%S--需判断的数独矩阵(9×9),空处用0替代%D--可填的值%P--可填值最少的位置,P中第1个元素为所在行,第2个元素为所在列globalCD=[1:9];fork1=1:9fork2=1:9ifA(k1,k2)~=0%跳过已给数值continu

4、eelsen1=ceil(k1/3);n2=ceil(k2/3);m=A(3*n1-2:3*n1,3*n2-2:3*n2);a=A(k1,:);%行b=A(:,k2)';%列c=reshape(m',1,9);%宫d0=setdiff(1:9,union(union(a,b),c));%行列宫并集的补集,即可填数iflength(d0)

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

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

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