在对this question的回答中,John Feminella说:
如果你真的很喜欢,可以用次要的方式做这个 将每个整数表示为位向量并执行快速 傅里叶变换,但这超出了这个答案的范围。
解决该问题中描述的问题的渐近最优方法是什么?
答案 0 :(得分:8)
假设我们有一个数组1 2 4
。我们将此数组表示为多项式f(x) = x^1 + x^2 + x^4
。我们来看f(x)^2
,这是
x^2 + 2 x^3 + x^4 + 2 x^5 + 2 x^6 + x^8
将n
写为数组的两个元素之和的方法的数量是x^n
的系数,这通常是正确的。 FFT为我们提供了一种有效地乘法多项式的方法*,所以基本上我们所做的就是计算f(x)^3
并查看目标数S的系数。