有N个数分成M组,要求每个组的和之间差为最小

解决方案 »

  1.   

    条件不清楚:
    ※ 有N个数分成M组,要求每个组的和之间差为最小
    是指“与平均值的差值最小”还是“最大和、最小和的差值区间最小”?
    例:如果 SUM(N个数) = 40, M = 4,分组后的和如下,哪个符合要求?
    {12, 12,  8, 8} {10, 10, 13, 7}※1、任意分组,每组个数不限制
      2、分组中最大个数和最小个数差不超过1,也就是平均值取整±1
    不是自相矛盾吗?比如 N = 5, M = 2 ,按照规则 2 分组的个数只能是 {3,2} 或 {2,3},而按照规则 1 可以分成 {5,0} 到 {0,5}
      

  2.   

    回楼上:  这是两个问题
    1、任意分组,每组个数不限制这个问题是说,每个分组中的数的个数不受限制
    “和之间差为最小”是指“最大和、最小和的差值区间最小”2、分组中最大个数和最小个数差不超过1,也就是平均值取整±1
    这个问题是说:每个分组中的数的个数是有限制的,如果10个数分三组 ,只能是4个 3个 3个可以说问题2的解法比1要简单。讨论了这么多天,我想大家还是讨论一下问题2吧
    maomao123_1981(落下)
    //把所有的数的和除以组数得到目标数
    //从大到小依次放入组中
    //之字形放入这肯定不是最优解我的算法是,先按个数随便放,然后将最大和中的最大数  和  最小和中最小数  交换
    循环比较,直到交换后不能产生最优解
    但是有个问题:当交换到“最优解”后,有可能存在 最大和中的最小的两个数  和  最小和中最大数 交换后 可以得到一个 “更最优解”  到这步,我基本就卡住了,请大家继续讨论