Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-04-11, 19:05   #1
lgzh2ld
初级会员
 
注册日期: 2009-04-09
帖子: 6
声望力: 0
lgzh2ld 正向着好的方向发展
默认 求助,心切,最短路径的路径输出问题

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->

不知道错在哪里,真心希望能得到大虾的指点
lgzh2ld 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 11:10


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.