、装球:设有N个盒子(N足够大,可装入任何数量的球),分别编号1,2,….同时有K个小球(K>0),今将K个小球装入到盒子中去,装入规则如下:(1) 第一个盒子不能为空.(2) 装入必须严格按递
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/06 10:40:18
、装球:设有N个盒子(N足够大,可装入任何数量的球),分别编号1,2,….同时有K个小球(K>0),今将K个小球装入到盒子中去,装入规则如下:(1) 第一个盒子不能为空.(2) 装入必须严格按递
、装球:设有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); ⑥ J:=1;
WHILE ⑦ DO BEGIN A(J):=J; ⑧ :J:=J+1 END; L:=j-1;
WHILE k>0 DO BEGIN
⑨ :K:=K-1:L:=L-1 END;
FOR I:=1 TO ⑩ DO WRITE(A[I]:4) END.
、装球:设有N个盒子(N足够大,可装入任何数量的球),分别编号1,2,….同时有K个小球(K>0),今将K个小球装入到盒子中去,装入规则如下:(1) 第一个盒子不能为空.(2) 装入必须严格按递
PROGRAM EXP3(INPUT,OUTPUT);
CONST N=20;
VAR I,J,K,L:INTEGER;
A:ARRAY[1..N] OF INTEGER;
BEGIN
READLN(k);
//这里不知要填什么
J:=1;
WHILE k>=0 DO
BEGIN
A[J]:=J;
k:=k-j;
J:=J+1;
END;
L:=j-1;
a[l]:=a[l]+k; //这里补充了好几句
k:=a[l];
a[l]:=0;
l:=l-1;
WHILE k>0 DO
BEGIN
a[l]:=a[l]+1;
K:=K-1;
L:=L-1;
END;
FOR I:=1 TO N DO //这里没有合适的变量可填,只好填N了,全部显示.
WRITE(A[I]:4)
END.
实在看不懂你给的那个程序到底什么思路,只好另编了,所以程序和原来的有点变化.按别人的思路编程的难度远超按自己的思路编.