现在需要下31个货物的订单,应该如何从以上供货单中抽取使其成本最低,例如上面的例子我们可以取
id(1)  20个
id(2)  11个
成本为20*1.90+11*1.98=59.45最便宜?
成本为20*1.90+11*1.98=59.78最便宜?
id(1)  20个
id(0)  10个
id(2)  1个
成本 20*1.90+10*1.95 + 1.98 = 59.48 才是最便宜

解决方案 »

  1.   

    回007remember(绿原)兄
    说得没错,但难就难在如何找出所有可能性,我想了很多办法,但变成实现有一定难度...
      

  2.   


    学习ing
    帮您顶
      

  3.   

    ID    范围  单价
    ------------------
    0    1-10   1.95
    1    11-20  1.90
    2    11-20  1.98
    3    1-10   3.0
    4    1-10  1.90
    5    11-20  2.90
    -------------------
    比如有个订单是30件货物
    处理订单:
    A:由一个供应商提供:
         只有一种可能,10×3(由上述例子看出只有3个供应商(5个里有3个提供10件货物)做比较,找出最便宜的)
    B:由二个供应商提供:
         只有一种可能:10+20(总共有3×3=9种情况)
    C:由三个供应商提供:
        只有一种可能:10+10+10(总共有一种情况)
    D:由四个供应商提供:
        没有可能
    E:由五个供应商提供:
        没有可能
         .
         .
         .
         .个人认为:
        主要在于分解订单(分成几个供应商供货),确定由1-n(n>=2)个供应商是个关键。其中n是关键中的关键。
       就题论题,比如上述例子。当订单是30件货物时,30÷10(所有供应商中提供最少货物的数量)=3
    在这里就可以判断在大类上的情况。由1,2,3个供应商提供货物的3大类情况,即粗略判断出n=3。然后再分别计算3大类中的每个有多少种情况。希望对楼主有帮助
      

  4.   

    其实若要找出所有情况,四个供应商,五个供应商也是有可能的,比如你给的例子,我可以
    5(id0)+11(id1)+5(id3)+11(id5)=30(虽然这样组合不是最便宜,但换组数据便有可能,所以必须考虑所有情况,再去找最优...)
    ....排列组合问题...