给出非负的整数数组a1…an,和一个目标数target。对数组中的每一个数,都可以选择+或者-。找出有多少种+/-的组合方法可以得到目标数target。
考虑到sum(P) - sum(N) = target(sum(P)是符号为正的数的和,sum(N)是符号为负的数的和),可以得出sum(P) = sum(N) + target,即2 * sum(P) = target + sum(N) + sum(p) = target + sum。将问题转化为求符号为正的数的和为target + sum的组合的个数。
算法如下:
|
|