📄 qiongjufa.m
字号:
%求出所有排列
A=zeros(7776,5);
l=0;
for i=1:6
for j=1:6
for k=1:6
for m=1:6
for n=1:6
l=l+1;
A(l,1)=i;
A(l,2)=j;
A(l,3)=k;
A(l,4)=m;
A(l,5)=n;
end
end
end
end
end
%令不满足任意槽高排列h1h2h3h4h5至少三个槽高互不相同条件的排列槽高全为0
for i=1:7776
n1=0;n2=0;n3=0;n4=0;n5=0;n6=0;
for j=1:5
if A(i,j)==1
n1=n1+1;
elseif A(i,j)==2
n2=n2+1;
elseif A(i,j)==3
n3=n3+1;
elseif A(i,j)==4
n4=n4+1;
elseif A(i,j)==5
n5=n5+1;
elseif A(i,j)==6
n6=n6+1;
end
end
if n1>3|(n2>3)|(n3>3)|(n4>3)|(n5>3)|(n6>3)
A(i,:)=zeros(1,5);
elseif (n1==3&(n2==2|n3==2|n4==2|n5==2|n6==2))|(n2==3&(n1==2|n3==2|n4==2|n5==2|n6==2))|(n3==3&(n2==2|n1==2|n4==2|n5==2|n6==2))
A(i,:)=zeros(1,5);
elseif (n4==3&(n2==2|n3==2|n1==2|n5==2|n6==2))|(n5==3&(n2==2|n3==2|n4==2|n1==2|n6==2))|(n6==3&(n2==2|n3==2|n4==2|n5==2|n1==2))
A(i,:)=zeros(1,5);
end
end
%令不满足任意槽高排列h1h2h3h4h5相邻槽高之差不能为5条件的槽高排列全为0
for i=1:7776
if abs(A(i,1)-A(i,2))==5|abs(A(i,2)-A(i,3))==5|abs(A(i,3)-A(i,4))==5|abs(A(i,4)-A(i,5))==5
A(i,:)=zeros(1,5);
end
end
%删除槽高全为0排列,得到实际槽高排列A0
k=0;
for i=1:7776
if A(i,:)~=0
k=k+1;
B(k,:)=A(i,:);
end
end
B
k
%将B进行按槽高和的奇偶性分为奇类琐具集V1,偶类琐具集V2
v1=0;v2=0;
for i=1:k
if rem(sum(B(i,:)),2)~=0
v1=v1+1;
V1(v1,:)=B(i,:);
elseif rem(sum(B(i,:)),2)==0
v2=v2+1;
V2(v2,:)=B(i,:);
end
end
v1
v2
%穷举出所有互开对,并给出每个锁具存在的互开对数
n1=0;e1=zeros(1,2940);c=0;
for i1=1:2940
for j1=1:2940
a=V1(i1,:)==V2(j1,:);
c=sum(a);
if c==4
for m=1:5
if a(1,m)==0&abs(V1(i1,m)-V2(j1,m))==1
n1=n1+1;
e1(i1)=e1(i1)+1;
end
end
end
end
end
n1
%具有相同互开对数的锁具个数
k=zeros(2,15);
for i=1:2940
if e1(i)==1
k(1,1)=k(1,1)+1;
elseif e1(i)==2
k(1,2)=k(1,2)+1;
elseif e1(i)==3
k(1,3)=k(1,3)+1;
elseif e1(i)==4
k(1,4)=k(1,4)+1;
elseif e1(i)==5
k(1,5)=k(1,5)+1;
elseif e1(i)==6
k(1,6)=k(1,6)+1;
elseif e1(i)==7
k(1,7)=k(1,7)+1;
elseif e1(i)==8
k(1,8)=k(1,8)+1;
elseif e1(i)==9
k(1,9)=k(1,9)+1;
elseif e1(i)==10
k(1,10)=k(1,10)+1;
elseif e1(i)==11
k(1,11)=k(1,11)+1;
elseif e1(i)==12
k(1,12)=k(1,12)+1;
elseif e1(i)==13
k(1,13)=k(1,13)+1;
elseif e1(i)==14
k(1,14)=k(1,14)+1;
elseif e1(i)==15
k(1,15)=k(1,15)+1;
end
end
k(2,:)=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];
k
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -