给定一个正整数的集合A={a1,a2,….,an},是否可以将其分割成两个子集合,使两个子集合的数加起来的和相等。
输出:例:A = { 1, 3, 8, 4, 10}
可以分割:{1, 8, 4} 及 {3, 10}
可以转化成背包问题:
1,首先算出所有元素的和sum。
2,计算不超过sum/2但最接近sum/2的元素的选择。(背包容量为suj/2)
上面给出的DP和递归的实现:
(1)迭代递归:用时104529 us
(2)记忆化递归(记忆化DP):用时318601 us
(3)直接递归:用时634060 us