如果你还在的话……
我发现你的程序有几个问题:
1.)变量"P"和"required_number_of_solutions"之间有冲突-> P来自输入参数列表,"required_number万博 尤文图斯_of_solutions"被定义为"10",在第14行。稍后在程序代码中使用这两个术语:
和
这导致了一些并发症。
2.)第28到30行是:
它什么也不做,但在代码中有三个单独的循环,用于“n==2”,“n==3”和“n==4”。因此,如果您为“n”输入的数字不是2、3或4,则不会发生任何事情。特别是,不会计算“seq”。
3.)在输出参数列表中有一个大写字母“V”,但在代码中只使用小写字母“V”。
4)。行:
什么都不做->写
disp (['序列总数为:',num2str(k)];
相反,如果你想在屏幕上有任何反馈。
5.)无法保证该计划会找到解决方案。在这种情况下,没有定义“seq”,这就是产生错误消息的原因。您从“Image Analyst”获得了一个版本,他在其中添加了“seq=[]”——这显然抑制了错误消息,然而,这表明程序存在更深层次的问题。
n + 1)。我不确定这个清单是否完整。
然而,作为一个个人的脑筋急用,我从提交的程序中扣除了原始任务,并创建了一个工作版本(至少它在我的MATLAB版本7.1.0.246 (R14)上工作)……
原始程序代码已所剩无几,因为我发现单独处理“n”的不同值很难。我采用递归方法。所以我不知道它是否对你有帮助?
向你问好,塞巴斯蒂安
作用[N, V, seq] = addition3_opt (N, p)
如果n> 十,;disp(“请输入n < = 10”);回来;终止
如果n<2;disp('请输入n>=2');回来;终止
如果m<2;disp(“请输入m > = 2”);回来;终止
disp (['行数n= ',num2str(n)];
disp (['列数m= ', num2str (m)));
disp (['解决方案数量:p='万博 尤文图斯0.01num2str (p)));
disp (['可能的行总数为:',num2str(k)];
disp ([num2str (k ^ n),'行的组合是可能的:']);
[na,nb]=网格(1:m);fab=find(na~=nb);
isum = [na (fab), nb (fab) + m];
显示([num2str(v),的解万博 尤文图斯决方案:]);
作用rec_add1opt (nloc mtx, ksum)
ksum = [ksum; isum + (nloc-2) *大小(x, 1)];
mtxloc =(简称mtx, x (:, i));
rec_add1opt (nloc mtxloc ksum);
sumlist =总和(mtxloc (ksum), 2);
如果和(差(排序(sumlist))==0)==0;
disp ([“解决方案nr:”,num2str(v)];
v = v + 1, seq (:,:, v) = mtxloc。';