有一根管子,这根管子假设长度为N,要把它分割成长度分别为N1,N2,N3,..(长度不一样,最多8种规格)的很多份,每种规格都要最少分割出一份,多分不限,这样就会出现很多种组合,每种组合切到最后都会剩余一点管子下来,要求计算出,最后剩余管子最少的前8种组合是什么组合。
这个问题主要是要求速度,在主流机器上计算速度要求不超过10秒,请各位高手给我指明一个思路,谢谢,我已经想了几天了。

解决方案 »

  1.   

    如果高兴,请用Lingo或Matlab解
      

  2.   

    to xielaixiangjx(谢香) 
    我不会Lingo和Matlab,能用delphi搞出来吗?
      

  3.   

    可以到:专题开发----〉数据结构与算法
    那个栏目去问,里面活跃着一个数学高手,名字就叫mathes
      

  4.   

    就是一个组合问题而已。
    测试:
    1 1 1 1 1 1 1 1
    ...
    1 1 1 1 1 1 1 n1
    一直到总长度超过N为止;
    再继续测试:
    1 1 1 1 1 1 2 1
    ...
    1 1 1 1 1 1 n2 n1
    依此类推。
    n1,n2 ... 为某种规格的最多数量。
      

  5.   

    说得再明白一点:
    1 1 1 1 1 1 2 1
    ...
    1 1 1 1 1 1 2 n1
    ...
    1 1 1 1 1 1 n2 1
    ...
    1 1 1 1 1 1 n2 n1
      

  6.   

    谢谢!
    to  DelphiGuy() 能否详细点