怎样用MATLAB编写 九宫阵的程序

来源:百度知道 编辑:UC知道 时间:2024/06/03 12:44:10
可以用Lido Ligo mathematics4.1 mathematics5.0 等等
也可以用c语言等
我的邮箱是:zhuhuan.haboy@163.com
欢迎大家把程序发到我的邮箱!
谢谢!

回答者:greatdju - 高级魔法师 七级 8-12 21:09

貌似在matlab上面算不出来啊
请检查下
谢谢

自己编的,matlab的,A是题目矩阵,0表示空格,B就是最后的答案,如果B是空集就说明无解。我还编了个windows界面的matlab程序,要的话告诉我你的邮箱,我可以发给你。
function B=shudu2(A);

[a,b]=find(A==0);%找0,即空格
if isempty(a)%如果没有0,就说明填满了,这就是答案。
B=A;
else%如果有0,就列出每个0的所有可能取值。
for z=1:length(a)
I{z}=[];
t=1:9;
for j=1:9
if A(a(z),j)~=0
t(A(a(z),j))=0;
end
if A(j,b(z))~=0
t(A(j,b(z)))=0;
end
end
for j=(ceil(a(z)/3)*3-2):(ceil(a(z)/3)*3)
for k=(ceil(b(z)/3)*3-2):(ceil(b(z)/3)*3)
if A(j,k)~=0
t(A(j,k))=0;
end
end
end
I{z}=find(t~=0);
if isempty(I{z})%如果没有可能项,说明矛盾。
B=[];return;
end
zz(z)=length(I{z});
end
[aa,bb]=min(zz);%从可能取值最少的地方开刀,这样快点