有如下长度为m的数组double[] temp = new double[]{26674.1801,8501.0794,4200.7688,4154.121,4140.8339,4027.7611,2943.0261,2881.6616,2764.3295,2544.4416,2523.472,2511.9676,2331.2284,2257.2681,2196.5566,2117.048,1876.5078,1686.4444,1597.3757,1581.3869,1336.729,1277.4896,1182.6866,1117.6565,986.2142,977.8615,896.9518,790.5348,588.9867,551.519,520.9944,0,0}
包的容量为k(例如 k = 6750),分成n个包,要求用最少的包把这些数字放进去(即n达到最小),而且要使包的容量浪费最少,求高手赐教!!!

解决方案 »

  1.   

    26674.1801 这本身就已经大于 k = 6750啦 
    一个包放不下呀 怎么搞不理解LZ的目的
      

  2.   

    也就是说,如果存在有单个元素大于包容量的情况,会首先将这各大于包容量的元素排除掉,剩余的数组进行背包算法,重复题目:
    有如下长度为 m 的数组double[] temp = new double[]{4200.7688,4154.121,4140.8339,4027.7611,2943.0261,2881.6616,2764.3295,2544.4416,2523.472,2511.9676,2331.2284,2257.2681,2196.5566,2117.048,1876.5078,1686.4444,1597.3757,1581.3869,1336.729,1277.4896,1182.6866,1117.6565,986.2142,977.8615,896.9518,790.5348,588.9867,551.519,520.9944,0,0}
    包的容量为k(例如 k = 6750),分成n个包,要求用最少的包把这些数字放进去(即n达到最小),而且要使包的容量浪费最少,求高手赐教!!!
    谢谢。
      

  3.   

    http://topic.csdn.net/u/20111125/15/fa8ce8a9-dd57-4c19-92e0-42059495a6e2.html
    这个问题和你那个有点类似 求不到最优解 随机生成N个解 取其中的最优解 怎么样呢
    我提供了他那个题解法的源码 你可以看看