不是VIP会员,不能显示答案

题目解答

题目:
装球:设有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表示小球个数)之后,求出满足上述四个条件的装入方法。
[算法描述]:设计一个数组A:ARRAY[1..N] OF INTEGER,用数组元素代表盒子然后依次装入小球。
PROGRAM EXP3(INPUT,OUTPUT);
       CONST N=20;
       VAR I,J,K,L:INTEGER;
            A       :ARRAY[1..N] OF INTEGER;
        BEGIN
           READLN(k);
               fillchar(a,sizeof(a),0)        
           J:=1;
           WHILE  j<=k    DO   
             BEGIN
                A(J):=J; k:=k-j    :J:=J+1
             END;
               L:=j-1;
            WHILE  k>0 DO
              BEGIN
                    a[l]:=a[l]+1    :K:=K-1:L:=L-1
               END;
               FOR I:=1 TO    j-1     DO
                WRITE(A[I]:4)
        END.
考点:
分析:
解答:
评论:
老师: