装球:设有n个盒子(n足够大,可装入任何数量的球),分别编号1,2,……。同时有k个小球(k>0),今将k 个小球装入到盒子中去。
装入规则如下:
(1)第一个盒子不能为空。
(2)装入必须严格按递增顺序进行。
     例如,当k=8,n=6时,装入方法有1,2,5或1,3,4
(3)在满足上面的两个条件下,要求有球的盒子尽可能多。
(4)装完后,相邻盒子中球个数差的绝对值之和最小(未装的盒子不计)。
如上例中:
  装入法1,2,5,则差的绝对值之和为2-1+5-2=4
  装入法1,3,4,则差的绝对值之和为3-1+4-3=3
  
[程序要求]  给出k(k表示小球的个数)之后,求出满足上述四个条件的装入方法。

解决方案 »

  1.   

    第一个盒子里装1个,第二个盒子里装2个,……一直装到不能装为止装到第n个盒子
    如果这时候还剩下球,则从第n个盒子开始往前,每个盒子放一个球,把剩下的球分完
    这样,可以满足lz的所有要求
      

  2.   

    补充一下:
    lz要求的条件4,个人理解应该是基于条件3的,即在盒子尽量多的情况下绝对值和最小
    条件4可以转化为最后一个数减第一个数尽量小
    盒子数的话,上面这个方法是最多的了,不可能有更多了
    在此基础上,最大数减最小数的差为n-1或n,不可能更小了
    以上