Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-04-09
帖子: 6
声望力: 0 ![]() |
![]()
function shortestpath(w,p,q)
c='->'; f=''; z=''; t=size(w); m=t(1,1); a=zeros(m,m); v=w; for k=1:m for i=1:m for j=1:m b=[w(i,j),w(i,k)+w(k,j)]; w(i,j)=min(b); if w(i,j)~=v(i,j) a(i,j)=k; %a(i,j)=10*a(i,j)+k; v=w; end end end end w; a; y=a(p,q); l=p; o=q; x=y; if x~=0 [f]=path1(p,q,f,a,c); f %[z]=path2(x,p,q,z,a,c); %z %l=num2str(l); %l=strcat(l,c); %f=strcat(l,f); %o=num2str(o); %f=strcat(f,o) else fprintf('%d->%d',p,q) end 自定义了一个M函数PATH1如下 function [f]=path1(p,q,f,a,c) a(p,q) if a(p,q)~=0 [f]=path1(p,a(p,q),f,a,c); p=a(p,q); x=p; x=num2str(x); f=strcat(f,x); f=strcat(f,c); x=str2num(x); %if a(p,q)==0 return %end [f]=path1(a(p,q),q,f,a,c); end 然后运行了 W=[0 90 10 20 22 4 5 30 31 22 23 22; 5 0 8 9 1 24 12 8 9 5 6 7; 3 14 0 15 21 8 9 12 9 8 7 12; 6 4 7 0 8 33 8 12 8 9 8 9; 10 9 20 2 0 4 5 12 4 12 23 22; 5 20 8 9 1 0 12 8 9 5 6 7; 3 14 21 15 21 8 0 12 9 8 7 12; 6 4 7 21 8 33 8 0 8 9 8 9; 20 9 10 9 22 4 5 3 0 22 23 22; 5 8 8 9 1 24 12 8 9 0 6 7; 3 14 14 15 21 8 9 12 9 8 0 12; 6 4 7 10 8 33 8 12 8 9 8 0] shortestpath(w,3,4) 我想要的结果是 1->6->5 可它输出的却是1->6-> 不知道错在哪里,真心希望能得到大虾的指点 |
![]() |
![]() |