+ -
当前位置:首页 → 问答吧 → 把一组长度为偶数数列,平均分成2组,怎样分使得|sum(a)-sum(b)|最小。

把一组长度为偶数数列,平均分成2组,怎样分使得|sum(a)-sum(b)|最小。

时间:2011-07-12

来源:互联网

如题:
  把一组长度为偶数数列,平均分成2组a和b,怎样分使得|sum(a)-sum(b)|最小。  


直觉上似乎要用到DP,用子序列求解,但是感觉子问题和状态转移不好定义,n到n+1的归纳不好搞。

哪位有好的DP解法?当然不是DP的也行。

作者: babykick   发布时间: 2011-07-12

首先不可能有有效算法,不然不就解决子集和问题了么。

作者: cfvmario   发布时间: 2011-07-12

1、排序;
2、交叉优先权分配,1、4、5,。。。 2、3、6,。。。
3、调整。
例如1,2,3,4,5,10;
1+4+5=10; 2+3+10=15
1和3交换,3-1<(15-10)/2
3+4+5=12 2+1+10=13

作者: xibeitianlang   发布时间: 2011-07-12