我需要在多项式时间复杂度中找到数组的每个子集中元素的乘积。
例如,对于数组{1,2,3}
,所需的总和将等于null+1+2+3+(1*2)+(1*3)+(2*3)+(1*2*3)
。
我所知道的只是对这个问题的蛮力方法。有人可以解释如何使用O(n^2)
或O(n^3)
时间复杂度中的动态编程解决此问题吗?
答案 0 :(得分:1)
以下是从O {n}解决此问题的方法:http://www.geeksforgeeks.org/sum-products-possible-subsets/
集合{a,b,c,...,z}的封闭形式为:
(a+1)(b+1)(c+1)...(z+1) - 1