永发信息网

求用matlab编写的数独游戏的界面,9*9,简单的

答案:1  悬赏:20  手机版
解决时间 2021-03-30 14:42
求用matlab编写的数独游戏的界面,9*9,简单的
最佳答案
function B=shudu(A)
%计算数独的程序。
%0表示待填的空格
%例子
%A=[2 0 0 0 9 0 0 0 7;
% 0 0 0 0 6 3 0 0 9;
% 0 0 9 1 0 5 0 0 0;
% 3 0 8 0 0 6 2 0 1;
% 0 0 1 0 0 0 3 0 0;
% 7 0 5 3 0 0 4 0 8;
% 0 0 0 6 0 9 5 0 0;
% 1 0 0 2 4 0 0 0 0;
% 6 0 0 0 3 0 0 0 4];
%shudu(A)
%ans =
% 2 3 6 8 9 4 1 5 7
% 5 1 4 7 6 3 8 2 9
% 8 7 9 1 2 5 6 4 3
% 3 4 8 9 5 6 2 7 1
% 9 2 1 4 8 7 3 6 5
% 7 6 5 3 1 2 4 9 8
% 4 8 3 6 7 9 5 1 2
% 1 5 7 2 4 8 9 3 6
% 6 9 2 5 3 1 7 8 4
[a,b]=find(A==0);%找0
if isempty(a)%如果没有0,就说明填满了,这就是答案。
B=A;
else%如果有0,就列出每个0的所有可能取值。
for i=1:length(a)
I{i}=[];
t=1:9;
for j=1:9
if A(a(i),j)~=0
t(A(a(i),j))=0;
end
if A(j,b(i))~=0
t(A(j,b(i)))=0;
end
end
for j=(ceil(a(i)/3)*3-2):(ceil(a(i)/3)*3)
for k=(ceil(b(i)/3)*3-2):(ceil(b(i)/3)*3)
if A(j,k)~=0
t(A(j,k))=0;
end
end
end
I{i}=find(t~=0);
if isempty(I{i})%如果没有可能项,说明矛盾。
B=[];return;
end
z(i)=length(I{i});
end
[p,q]=min(z);%从可能取值最少的地方开刀,这样快点
for j=1:p%将可能的值一个个代入,递归
C=A;C(a(q),b(q))=I{q}(j);
B=shudu(C);
if ~isempty(B);
return;
end
end
end
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
喜来乐药业茅贡分店我想知道这个在什么地方
我是学电商的,平面设计师资格证有用吗,这垃
胡椒猪蹄汤的做法步骤图,胡椒猪蹄汤怎么做
最准的算命软件
双层双向板附加筋,板面降低三公分,附加筋要不
关于5.12汶川地震对全国哀悼日不满的那个女人
重力转向的滑板车品牌有哪些?
我养的八点黑兔子长到四斤就不长了,他们说能
于是两种组分分离必须符合哪些条件?这些条件
如何在PR/AE里做融图效果?
纯酸油漆能覆盖丙烯酸油漆
武魂2的客户端修理工具有什么用?
求柴进雾霾穹顶之下时评,为国为民,为了广大
到底怎么样才可以更简单的全文背诵春这篇课文
南湖御碑亭的介绍
推荐资讯
新创广告(东岩路)地址在哪,我要去那里办事,
国内比较好用php语言的cms 有哪些
权健麦牙精讲解视频
女生163cm体重100斤穿什么尺码的衣服呢
轻断食减肥方法如何?
请问工行小e,基金漫游如何办理
存jpg格式90以上的压缩比,是什么意思?
烧胎时,对发动机 伤吗?
顶峰百度推广靠谱嘛?
我的嘴左上角肿了怎么办
魔法门7 升法师要找6个组件,我已找了7个(包
泥鳅养殖多孔材料用的是什么材料
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?