<编程之美>数组分割问题

题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。

先对数组进行排序,然后用动态规划思想,逐步添加。

初始化:将最大的两个数分别加入两个新数组。

过程:1.取出原数组中剩余数中的最大数,加入数组和较小的数组,若此时较小数组变成较大数组,重复1操作,若此时较小数组依然是较小数组,执行操作2。

   2.取原数组剩余数中的最小数加入较大数组。

如此动态规划知道原数组为空。

例子:1,5,7,8,9,6,3,11,17,20

排序:20,17,11,9,8,7,6,5,3,1

a:20

b:17

如此:

a:20,9,7,6,1  sum=43

b:17,11,8,5,3  sum=44

posted on 2011-11-25 15:37  effrot  阅读(484)  评论(1)    收藏  举报

导航