Partition Equal Subset Sum

刚看到这个问题我就隐约回忆起了cs170时候学过的subset问题,然后我发现我完全不记得那个东西是怎么做的。【感觉都是套路阿,都拿这种困扰计算机多年的大题叫人面试即兴做】



Dynamic Programming implementation.

Idea: 先要identify子问题。 这个跟简单版DP不太一样,简单的DP 子问题就一个参数,这里两个参数。 1个是子的target sum. 还有一个是子的given array. 

也就是比如说原本我们要判断target sum =100, array size =0--1000 elements.

我们可以拆分成小的问题,假如target只要10, given array 10个数,能不能sum 出这个结果。

最后是identify subproblem之间的进阶关系:

如果target sum i>= set[j-1], 比input array 只看到j-1这个元素,要大。我们进行判断:

�target sum=i, array size=0...j的答案要嘛完全等于上一轮的结果,要嘛等于等于子问题

subsets[i-set(j-1)[j-1]]的结果。


复习完subset sum问题之后再看这道题就简单很多。(其实也不能说简单很多吧hhh)

最关键的是如何把这道题变成subset sum problem. 我们缺的东西就是target sum。 这个如果花一点时间想就知道target sum 其实就是所有数字加起来除2. 

最tricky的一点就是要判断target sum是否能被2整除。 如果不行,直接不用判断了。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容