刚学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
展开
 我来答
半仙1012
2014-06-15 · 超过24用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:55.3万
展开全部
你这个循环最后剩下一个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.
百度网友3c63e6c
2014-06-15 · TA获得超过2847个赞
知道大有可为答主
回答量:3829
采纳率:68%
帮助的人:2748万
展开全部
那就是因为没有点满足要求啊。。。
追问
能给出正确编码吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式