首页 > 其他 > 详细

集合划分问题

时间:2020-07-15 01:38:04      阅读:90      评论:0      收藏:0      [点我收藏+]

问题:

给定一个数组,每个元素范围是0~K(K < 整数最大值2^32),将该数组分成两部分,使得 |S1- S2|最小,其中S1和S2分别是数组两部分的元素之和。

分析:

实质是01背包问题的变型。

(1)求得sum值(总和)

(2)求得midel值(中值)

(3)通过01背包问题,求得最接近midel的值,即|sumx-midel|最小,根据互补特性一定存在另一半。

(4)结果值:res = |sum-sumx-sumx|

(5)为了数据安全使用double类型记录值,最后使用格式化输出整型结果。

 

代码:

 

集合划分问题

原文:https://www.cnblogs.com/dream-flying/p/13302523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!