数独游戏程序

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%数独游戏程序,可以破解绝大部分数独题。

%用法:将所有文件复制到MATLAB工作目录下,或是将MATLAB工作目录修改为本文件夹所在路径。

%A是一个初始的99的方阵,空白处用0代替,调用TT=shudu(A),则生成结果。

function TT=fill1(A)

T=A;

i=1;

n1=0;n2=0;

flag1=judge1(T);

while i<10

n1=0;n2=0;

for j=1:9

if T(i,j)==0&i~=flag1(:,1)&j~=flag1(:,2)&iden(i,j,1,T)==0

n1=n1+1;

end

end

if n1==1

for j=1:9

if T(i,j)==0&i~=flag1(:,1)&j~=flag1(:,2)&iden(i,j,1,T)==0

T(i,j)=1;

flag1=judge1(T);

end

end

end

for j=1:9

if T(j,i)==0&j~=flag1(:,1)&i~=flag1(:,2)&iden(j,i,1,T)==0

n2=n2+1;

end

end

if n2==1

for j=1:9

if T(j,i)==0&j~=flag1(:,1)&i~=flag1(:,2)&iden(j,i,1,T)==0

T(j,i)=1;

flag1=judge1(T);

end

end

end

if n1==1|n2==1

i=0;

end

i=i+1;

end

TT=T;

function TT=fill2(A)

T=A;

i=1;

n1=0;n2=0;

flag2=judge2(T);

while i<10

n1=0;n2=0;

for j=1:9

if T(i,j)==0&i~=flag2(:,1)&j~=flag2(:,2)&iden(i,j,2,T)==0

n1=n1+1;

end

end

if n1==1

for j=1:9

if T(i,j)==0&i~=flag2(:,1)&j~=flag2(:,2)&iden(i,j,2,T)==0

T(i,j)=2;

flag2=judge2(T);

end

end

end

for j=1:9

if T(j,i)==0&j~=flag2(:,1)&i~=flag2(:,2)&iden(j,i,2,T)==0

n2=n2+1;

end

end

if n2==1

for j=1:9

if T(j,i)==0&j~=flag2(:,1)&i~=flag2(:,2)&iden(j,i,2,T)==0

T(j,i)=2;

flag2=judge2(T);

end

end

end

if n1==1|n2==1

i=0;

end

i=i+1;

end

TT=T;

function TT=fill3(A)

T=A;

i=1;

n1=0;n2=0;

flag3=judge3(T);

while i<10

n1=0;n2=0;

for j=1:9

if T(i,j)==0&i~=flag3(:,1)&j~=flag3(:,2)&iden(i,j,3,T)==0

n1=n1+1;

end

end

if n1==1

for j=1:9

if T(i,j)==0&i~=flag3(:,1)&j~=flag3(:,2)&iden(i,j,3,T)==0

T(i,j)=3;

flag3=judge3(T);

end

end

end

for j=1:9

if T(j,i)==0&j~=flag3(:,1)&i~=flag3(:,2)&iden(j,i,3,T)==0

n2=n2+1;

end

end

if n2==1

for j=1:9

if T(j,i)==0&j~=flag3(:,1)&i~=flag3(:,2)&iden(j,i,3,T)==0

T(j,i)=3;

flag3=judge3(T);

end

end

end

if n1==1|n2==1

i=0;

end

i=i+1;

end

TT=T;

function TT=fill4(A)

T=A;

i=1;

n1=0;n2=0;

flag4=judge4(T);

while i<10

n1=0;n2=0;

for j=1:9

if T(i,j)==0&i~=flag4(:,1)&j~=flag4(:,2)&iden(i,j,4,T)==0

n1=n1+1;

end

end

if n1==1

for j=1:9

if T(i,j)==0&i~=flag4(:,1)&j~=flag4(:,2)&iden(i,j,4,T)==0

T(i,j)=4;

flag4=judge4(T);

end

end

end

for j=1:9

if T(j,i)==0&j~=flag4(:,1)&i~=flag4(:,2)&iden(j,i,4,T)==0

n2=n2+1;

end

end

if n2==1

for j=1:9

if T(j,i)==0&j~=flag4(:,1)&i~=flag4(:,2)&iden(j,i,4,T)==0

T(j,i)=4;

flag4=judge4(T);

end

end

end

if n1==1|n2==1

i=0;

end

i=i+1;

end

TT=T;

function TT=fill5(A)

T=A;

i=1;

n1=0;n2=0;

flag5=judge5(T);

while i<10

n1=0;n2=0;

for j=1:9

if T(i,j)==0&i~=flag5(:,1)&j~=flag5(:,2)&iden(i,j,5,T)==0

n1=n1+1;

end

end

相关文档
最新文档