刚学matlab,求教matlab大神有10个点,上面等于0的表示待连接线路,(10,1)、(1,3)已连接,在剩下的几条待建线路中选几条连接,使10个点连成辐射状,输出结果为:1表示连接,0表示不连(只考虑待

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 08:49:04

刚学matlab,求教matlab大神有10个点,上面等于0的表示待连接线路,(10,1)、(1,3)已连接,在剩下的几条待建线路中选几条连接,使10个点连成辐射状,输出结果为:1表示连接,0表示不连(只考虑待
刚学matlab,求教matlab大神
有10个点,上面等于0的表示待连接线路,(10,1)、(1,3)已连接,在剩下的几条待建线路中选几条连接,使10个点连成辐射状,输出结果为:1表示连接,0表示不连(只考虑待建线路).怎么加了if语句限制后输出不了了
a=[3,10];
b=[2,4,5,6,7,8,9];
c=ones(10,10);
c(10,1)=0;
c(1,3)=0;
c(10,2)=0;
c(2,4)=0;
c(3,5)=0;
c(8,3)=0;
c(8,7)=0;
c(6,7)=0;
c(9,4)=0;
c(5,7)=0;
c(4,5)=0;
c(9,6)=0;
c(5,6)=0;
c(4,8)=0;
c(4,3)=0;
c(6,10)=0;
for i=1:10
for j=1:10
c(i,j)=c(j,i);
end
end
while length(b)>0
a=a(randperm(length(a)));
b=b(randperm(length(b)));
a(1);
b(1);
if c(a(1),b(1))==1
c(a(1),b(1))=1;
a=[a,b(1)];
b(1)=[];
end
end
c

刚学matlab,求教matlab大神有10个点,上面等于0的表示待连接线路,(10,1)、(1,3)已连接,在剩下的几条待建线路中选几条连接,使10个点连成辐射状,输出结果为:1表示连接,0表示不连(只考虑待
你这个循环最后剩下一个b中的元素等于5的时候c(a(1),5)是等于1的,也就是那个if逻辑是0不能执行以后的命令,所以后面b(1)=[];永远无法执行,b的长度就不会为0,最后陷入死循环了