📄 gaijin.asv
字号:
clear
i=1;
sum1=0;
a=[0 1 1 0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 0 0 0 1 0 0 1 1 0 0
0 1 0 1 0 0 0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 1 0 1 1
0 0 0 0 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 1
0 1 0 1 0 0 0 0 0 1 1 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 1 0 0 0 1
0 0 1 1 0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0 1 1 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 0 1 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0 0 0 0 1
0 1 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0
0 0 0 0 0 0 1 1 0 0 0 0 1 1
1 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 1 1 0 0
0 0 0 1 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 1 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 1 0 0 0 0
0 0 0 1 0 1 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 1 1 0 0 0 0 0 1 0 0
0 0 0 1 0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 1 0 0 0 0
0 0 0 0 0 1 0 1 0 1 0 0 0 1
0 0 0 0 1 0 0 1 1 0 0 0 1 0
0 0 0 0 0 1 1 0 1 0 0 0 1 0
];
%--------------------------------------------------------------%
%把运动员参加运动的对应情况表现在矩阵a中,其中行号代表运动员编号,列号
%代表运动项目编号,a[i,j]=1代表编号为i的运动员参加编号为j的运动项目,
%若为a[i,j]=0则表示编号为i的运动员不参加编号为j的运动项目
%--------------------------------------------------------------%
b=a'*a;
%--------------------------------------------------------------%
%当k不等于l时,b[k,l]代表当编号为k的运动项目与编号为l的运动项目挨在一
%起举行时,连续参加这两项比赛的运动员人次,当k=l时表示参加编号为k的项目
%的运动员人次
%-------------------------------------------------------------%
for i=1:14
b(i,i)=inf;
end
%为了方便下面的计算,我们把矩阵的对角线上的元素赋值为正无穷,此时,这些
%元素已经没有了具体意义.
%-------------------------------------------------------------%
bb=b;
%-------------------------------------------------------------%
%把矩阵b赋值给另外一个矩阵bb
%-------------------------------------------------------------%
s=1;
while min(min(b))~=Inf
[H,L]=size(b);
%------------------------------------------------------------%
%求矩阵b的行数和列数,并把他们分别赋值给H和L
%------------------------------------------------------------%
xiao=min(b);
%------------------------------------------------------------%
%求矩阵b的每一列最小值,并把他赋值给矩阵xiao
%------------------------------------------------------------%
da=MAX(b);
%------------------------------------------------------------%
%通过调用函数MAX(b)求矩阵每列的次大值,并赋值给矩阵da
%------------------------------------------------------------%
cha=da-xiao;
zda=max(cha);%------------------------------------------------------------%
%求矩阵每一列的次大值与最小值之间的差
%------------------------------------------------------------%
for i=1:L
if zda==cha(i)
break;
end
end
%-----------------------------------------------------------%
%求出在矩阵的每一列中,最大值与最小值相差最大的那一列的坐标i;
for j=1:H
if b(j,i)==xiao(i);
break;
end
end
%-----------------------------------------------------------%
%求出在矩阵的每一列中,最大值与最小值相差最大的那一列中的最小值的行坐标j;
c=b(j,i);
Y=qhl(c,b);
m=Y(1);
n=Y(2);
ljx(s)=m;
ljy(s)=n;
s=s+1;
b(m,:)=Inf;
B=b';
B(n,:)=Inf;
b=B';
b(n,m)=inf;
for i=1:s-1
b(n,ljx(i))=Inf;
end
end
for i=1:13
sum1=sum1+bb(ljx(i),ljy(i));
end
sum1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -