Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 一种动态算法,将序列中的元素相乘,每次两个,然后求出总数_Algorithm_Recursion_Dynamic_Sequence_Pseudocode - Fatal编程技术网

Algorithm 一种动态算法,将序列中的元素相乘,每次两个,然后求出总数

Algorithm 一种动态算法,将序列中的元素相乘,每次两个,然后求出总数,algorithm,recursion,dynamic,sequence,pseudocode,Algorithm,Recursion,Dynamic,Sequence,Pseudocode,我试图找到一种动态方法,将线性序列中的每个元素乘以下面的元素,并对元素对进行同样的操作,等等,然后求所有乘积的和。请注意,任何两个元素都不能相乘。必须是第一个和第二个,第三个和第四个,依此类推。关于线性序列,我所知道的是有偶数个元素 我假设我必须存储每次相乘的数字和它们的乘积,然后检查其他一些“可乘法”元素对,看看乘积是否已经计算过(也许它们与当前元素对具有相反的符号) 然而,根据我对线性序列的理解,每次值必须以相同的数量增加或减少。但由于存在偶数,我认为不可能有两个“可乘”对相同(具有可能相反

我试图找到一种动态方法,将线性序列中的每个元素乘以下面的元素,并对元素对进行同样的操作,等等,然后求所有乘积的和。请注意,任何两个元素都不能相乘。必须是第一个和第二个,第三个和第四个,依此类推。关于线性序列,我所知道的是有偶数个元素

我假设我必须存储每次相乘的数字和它们的乘积,然后检查其他一些“可乘法”元素对,看看乘积是否已经计算过(也许它们与当前元素对具有相反的符号)

然而,根据我对线性序列的理解,每次值必须以相同的数量增加或减少。但由于存在偶数,我认为不可能有两个“可乘”对相同(具有可能相反的符号),原因如下例所示:

序列:{-2,-1,0,1,2,3}

配对:-2*-1,0*1,2*3

显然,由于存在偶数对,相同乘法可能不止一次发生的唯一情况是,如果元素每次增加/减少0


我看不出这是一个动态规划问题,如果有人能澄清,我将不胜感激

快速搜索定义线性序列

每次增加(或减少)相同数量的数字模式称为线性序列。它增加或减少的量称为公共差

在你的例子中,共同的区别是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
指令快)