Algorithm 一种动态算法,将序列中的元素相乘,每次两个,然后求出总数
我试图找到一种动态方法,将线性序列中的每个元素乘以下面的元素,并对元素对进行同样的操作,等等,然后求所有乘积的和。请注意,任何两个元素都不能相乘。必须是第一个和第二个,第三个和第四个,依此类推。关于线性序列,我所知道的是有偶数个元素 我假设我必须存储每次相乘的数字和它们的乘积,然后检查其他一些“可乘法”元素对,看看乘积是否已经计算过(也许它们与当前元素对具有相反的符号) 然而,根据我对线性序列的理解,每次值必须以相同的数量增加或减少。但由于存在偶数,我认为不可能有两个“可乘”对相同(具有可能相反的符号),原因如下例所示: 序列:{-2,-1,0,1,2,3} 配对:-2*-1,0*1,2*3 显然,由于存在偶数对,相同乘法可能不止一次发生的唯一情况是,如果元素每次增加/减少0Algorithm 一种动态算法,将序列中的元素相乘,每次两个,然后求出总数,algorithm,recursion,dynamic,sequence,pseudocode,Algorithm,Recursion,Dynamic,Sequence,Pseudocode,我试图找到一种动态方法,将线性序列中的每个元素乘以下面的元素,并对元素对进行同样的操作,等等,然后求所有乘积的和。请注意,任何两个元素都不能相乘。必须是第一个和第二个,第三个和第四个,依此类推。关于线性序列,我所知道的是有偶数个元素 我假设我必须存储每次相乘的数字和它们的乘积,然后检查其他一些“可乘法”元素对,看看乘积是否已经计算过(也许它们与当前元素对具有相反的符号) 然而,根据我对线性序列的理解,每次值必须以相同的数量增加或减少。但由于存在偶数,我认为不可能有两个“可乘”对相同(具有可能相反
我看不出这是一个动态规划问题,如果有人能澄清,我将不胜感激 快速搜索定义线性序列 每次增加(或减少)相同数量的数字模式称为线性序列。它增加或减少的量称为公共差 在你的例子中,共同的区别是1。你没有考虑任何其他情况 相同的乘法可以按以下顺序进行 序列={3,-1,1,3} 成对=-3*-1,1*3 具有2的共同差异
然而,这不一定要通过动态规划来解决。您只需对这些数字进行迭代,将两个数字的乘法存储在一个集合中(因为集合包含唯一的数字),然后求和 可能不是你想要的,但我已经找到了解决这个问题的封闭式解决方案 假设我们观察前两个数字。用
a
记下第一个数字,数字d
之间的差异。然后,我们计算整个序列中的2n
个数。那么您定义的总和是:
sum = na^2 + n(2n-1)ad + (4n^2 - 3n - 1)nd^2/3
除此之外,我也没有看到这是一个动态问题,或者至少这似乎是一个动态编程方法实际上没有太多作用的问题。序列完全不可能从负变为正,即使如此,两个数字之间的差值越大,看到重复条目的可能性也越小。此外,乘法运算速度非常快,从数据结构中提取乘法的开销可能会更高。(mul
指令可能比lw
指令快)