gpt4 book ai didi

algorithm - Matlab算法问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:32 25 4
gpt4 key购买 nike

伙计们,我在开发一种算法时遇到了问题,该算法采用按递增顺序排序的有限实数列表和实数 N,并且

-如果存在两个索引ij , 这样 1 <= i <j <= numel(L)L(i)+L(j)=N ,然后算法返回对 sumToN = [L(i) L(j)] ;如果存在多对具有所需属性的索引,则该函数返回有效对之一,

-如果相等L(i)+L(j)=N对任何指标都不满意 ij , 这样 1 <= i < j <= numel(L) , 函数返回空对 Ret .

L = [1 2 2 3];
N = 3;
sumToN = 0;

for i=1:numel(L);
for j=1:numel(L);
if i<j;
if L(i) + L(j) == N;

sumToN = [L(i) L(j)];
display(sumToN);
else
Ret = [0 0];
display(Ret);
end
end
end
end

现在,在我用 Matlab R2014 编写的这段代码中,独立于 if 条件,我得到了一个奇怪的输出:命令窗口显示两倍的矢量 sumToN和向量的四倍 Ret .关于如何解决这个问题的任何建议?我认为算法是正确的...

最佳答案

算法正确,显示行为也正确。在你的循环中 i<j满意6次。这是针对 (i,j) 对 (1,2),(1,3),(1,4),(2,3),(2,4),(3,4)。因此,根据您的代码,您应该期望显示 6 次。在这些基于 L 中数据的对中,条件 L(i)+L(j)==3可以满足两次 (1,2) 和 (1,3)。所以你得到 sumToN 显示两次,其余 4 次 Ret 显示。

如果您想在找到一对时立即停止,则应在检测到 L(i)+L(j) == N 后立即返回此函数的值。 .您应该在循环开始之前将 Ret 初始化为 [0 0] 并在循环结束后返回它。如果您没有找到 L(i)+L(j) == N,这将返回 [0 0]。

关于algorithm - Matlab算法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31705861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com