📄 第二次模拟题prim算法.m
字号:
x=zuobiao(:,1);
y=zuobiao(:,2);
n=zuobiao(:,3);
maxright=500;
num=96;
for i=1:num
for j=1:num
if(i~=j)
avalue(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
end
if(i==j)
avalue(i,j)=maxright;
end
end
end
avalue(34,86)=sqrt((90-x(34))^2+(75-y(34))^2)+sqrt((90-x(86))^2+(75-y(86))^2);
avalue(86,34)=avalue(37,86);
avalue(34,12)=sqrt((90-x(34))^2+(75-y(34))^2)+sqrt((90-x(12))^2+(75-y(12))^2);
avalue(12,34)=avalue(34,12);
in=zeros(num,1);
in(1)=1;
path=zeros(num,2);
min=maxright;
v1=1;
v2=1;
for i=1:num-1
for j=1:num
for k=1:num
if(in(j)==1)
if(in(k)==0)
if(avalue(j,k)<min)
v1=j;
v2=k;
min=avalue(j,k);
end
end
end
end
end
if(in(v2)==0)
path(i,1)=v1;
path(i,2)=v2;
in(v1)=1;
in(v2)=1;
min=maxright;
end
end
s=0;
for i=1:num-1
x1=x(path(i,:));
y1=y(path(i,:));
n1=n(path(i,:));
s=s+avalue(path(i,1),path(i,2));
if(x1(1)~=x(34))
plot(x1,y1,'*-');
hold on
end
if(x1(1)==x(34))
plot([x(34),90,x(12)],[y(34),75,y(12)]);
hold on
end
end
plot(zhangai([1,2,3,1],1),zhangai([1,2,3,1],2),zhangai([4,5,6,8,7,4],1),zhangai([4,5,6,8,7,4],2),zhangai([9,10,11,9],1),zhangai([9,10,11,9],2),zhangai([12,13,14,12],1),zhangai([12,13,14,12],2))
hold on
s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -