load B1.txt %巡警站点号、横坐标、纵坐标(前三列) load B2.txt %起始点,末端位置号(两列) hzb=B1(:,2);%横坐标 zzb=B1(:,3);%纵坐标 start=B2(:,1);%起始位置 fina=B2(:,2);%末端位置 n=length(hzb);%坐标个数 m=length(start);%起始点个数:含重复 a=ones(n,n);%n 阶矩阵 b=10000.*a;%b 为矩阵 a 的值乘上 10000 for i=1:m % 每个始点出去 x=start(i); y=fina(i); if y<=92 s=((hzb(x)-hzb(y))^2+(zzb(x)-zzb(y))^2)^0.5; b(x,y)=s; b(y,x)=s;%双向图距离 end end path=zeros(n,20);%终点前一个路劲节点 distance=b(:,1:20);%二十个站到其他点的最短距离 u=0; mindis=10000;%最短距离初始为10000 flag=1; s=zeros(n,1); for i=1:20 s=0.*s;%每次清零 flag=1;%bool 型标量 for j=1:n if distance(j,i)<10000 path(j,i)=i;%若满足,就往下走 end end s(i)=1; for j=1:n % if flag==1 mindis=10000; for k=1:n if s(k)==0 & distance(k,i)30 % flag=0; % end s(u )=1; for k=1:n if s(k)==0 & b(u ,k)<10000 & distance(u ,i)+b(u ,k)