Algorithm 由数组的子数组生成的多项式的乘积

Algorithm 由数组的子数组生成的多项式的乘积,algorithm,math,Algorithm,Math,我们得到一个系数数组,我们需要找到所有多项式的乘积,我们可以使用给定数组的所有子数组来创建这些多项式 我能用O(n^2)复杂度来解决它。但我想提高程序的复杂性。 多项式按以下方式创建 示例数组:-[2,4,1] 现在该阵列的所有子阵列如下所示:- [2] -> 2x^0 [2, 4] -> 2x^0 + 4x^1 [2, 4, 1] -> 2x^0 + 4x^1 + 1x^2 [4] -> 4x^0 [4, 1] ->

我们得到一个系数数组,我们需要找到所有多项式的乘积,我们可以使用给定数组的所有子数组来创建这些多项式

我能用O(n^2)复杂度来解决它。但我想提高程序的复杂性。 多项式按以下方式创建

示例数组:-[2,4,1] 现在该阵列的所有子阵列如下所示:-

[2]        -> 2x^0
[2, 4]     -> 2x^0 + 4x^1
[2, 4, 1]  -> 2x^0 + 4x^1 + 1x^2
[4]        -> 4x^0
[4, 1]     -> 4x^0 + 1x^1
[1]        -> 1x^0
现在我需要所有多项式的乘积。 我试着求解长度为3的数组,但没有找到模式。这是我工作的截图


如果您有任何帮助,我们将不胜感激。

我想知道当输出大小为
O(n^3)
时,您如何在
O(n^2)
时间内做到这一点。我们得到了x值,因此可以使用前缀和。这里有一个O(n^lg3)算法。也可以使用FFT:我认为OP是指n*n子阵列的乘法。但是FFT被用来将两个多项式相乘。不是吗@wcochranI想知道当输出大小为
O(n^3)
时,如何在
O(n^2)
时间内做到这一点。我们得到了一个x值,因此可以使用前缀和。这里有一个O(n^lg3)算法。也可以使用FFT:我认为OP是指n*n子阵列的乘法。但是FFT被用来将两个多项式相乘。不是吗@沃克兰