刚学matlab,求教matlab大神
有10个点,上面等于0的表示待连接线路,(10,1)、(1,3)已连接,在剩下的几条待建线路中选几条连接,使10个点连成辐射状,输出结果为:1表示连接,0表示不连(只考虑...
有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 展开
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 展开
2个回答
展开全部
你这个循环最后剩下一个b中的元素等于5的时候c(a(1),5)是等于1的,也就是那个if逻辑是0不能执行以后的命令,所以后面b(1)=[];永远无法执行,b的长度就不会为0,最后陷入死循环了
更多追问追答
追问
“你这个循环最后剩下一个b中的元素等于5的时候c(a(1),5)是等于1的‘’
菜鸟不是很懂,能给出个正确程序不?
追答
我有点不太懂你的意思,你是说1表示连接,0表示不连接,(10,1)、(1,3)已连接,但是赋值的时候你又把这两个赋值成了0.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询