这个类似:现在有人民币 
 
0分<$ <100元求出找零钱的最少张数的算法。

解决方案 »

  1.   

    假设一堆商品有M个,箱子分别能装a,b,c个等等,只要对M做如下处理:
    M对a取整得可以使用多少个a箱子,然后M对a取余得N,然后N对b取整得可以使用多少个b箱子,然后N对b再取余。以此类推
      

  2.   

    典型的动态规划问题:
    设vCase[i]表示箱子大小
    vGoods[i]表示商品大小
    f[i,j]表示检查到第j只箱子时,还剩余i个商品需要包装。那么转移方程是:①当i=1,vGoods[1]>=vCase[j]时,f[i,j]=vGoods[1]
    ②当i=1,vGoods[1]<vCase[j]时,f[i,j]=无解
    ③当i>1,f[i,j]=max{ f[vGoods[i]-vCase[i],j-1], f[vGood[i],j-1] }