作业帮 > 综合 > 作业

求MATLAB大神看看我的算法怎么错了

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 10:35:19
求MATLAB大神看看我的算法怎么错了
clc
clear
x=input('景点总数');
A=[1:1:x];
Y=input('所选景点序数');
A1=A(:,Y);%在此矩阵,A1与Y相同
a=size(A1,2)+1;
B1=perms(A1);
b=size(B1,1);
A2=zeros(b,1);
B=[A2,B1];
for j=1:b
j=j+1;
i=1;
for i=1:a-1
i=i+1;
if B(j,i)==1&&B(j,i+1)==2
B(j,:)=[],
end
end
end
循环之前没问题,就是循环没法运行
for j=1:b
j=j+1;
j=1:b已经是在步进了,为什么还要再做一个++?
是想以2为步进的话,那不如直接 j = 1:2:b
然后不需要i = 1的赋值,i=1:a-1已经赋值
同样,i=i+1是嫌1的步进慢吗?那直接i = 1:2:a-1就行了
再问: for j=1:b
i=1;
for i=2:a-1
if B(j,i)==1&B(j,i+1)==2
B(j,:)=[]
b=b-1
j=j-1
end
end
end
这样改了,输入5,[1,2,3,4]会少删掉一行,why
再答: i=1;
for i=2:a-1
为啥不直接用for i=1:a-1
再问: 这么写的话,J增加后,I还会从1开始重新循环一次么?c里面是可以的Matlab就不知道了
再答: 当然会了……matlab比c方便多了

你那样写反而导致 i 每次只从2开始循环,不会走1的
再问: 求大神联系方式··我写好了··想让你帮忙优化一下 316173075