主题:[讨论]巧妙装球
世界型帅哥
[专家分:0] 发布于 2006-10-29 19:37:00
装球,设有8个盒子,分别编号1,2,……同时有13个小球,今将13个小球装入到盒子中去,装入规则如下:
(1) 第一个盒子不能为空
(2) 装入必须严格按递增的顺序进行。
如:1,3,4,5或1,2,3,7
(3) 在满足上面的两上条件下,要求有球的盒子尽可能多。
(4) 装完后,相邻盒子中球个数差的绝对值之和为最小
如上例中:
装入法:1,3,4,5 则差的绝对值之和为:(3-1)+(4-3)+(5-4)=4
装入法:1,2,3,7则差的绝对值之和为:(2-1)+(3-2)+(7-3)=6
回复列表 (共6个回复)
沙发
moz [专家分:37620] 发布于 2007-01-13 20:18:00
第一个条件很简单,
第二个条件也简单,
第三个条件更简单,
第四个条件的意思其实是最多与最少之差
那更简单.
明年再写
板凳
phile [专家分:2310] 发布于 2009-07-23 10:36:00
简单
CLS
INPUT K, N
DIM A(N)
DO WHILE K > J
J = J + 1
A(J) = J
K = K - J
LOOP
P = J
DO WHILE K >= 1
A(P) = A(P) + 1
K = K - 1
L = L - 1
LOOP
FOR I = 1 TO J
PRINT A(I);
NEXT I
3 楼
明月轻风 [专家分:10] 发布于 2009-07-30 21:17:00
什么意思? 请phile能解释一下吗!
4 楼
phile [专家分:2310] 发布于 2009-08-02 18:45:00
CLS
INPUT K, N
DIM A(N)
DO WHILE K > J ‘要想相邻盒子中球个数差的绝对值之和为最小,那1~N。
J = J + 1
A(J) = J
K = K - J
LOOP
P = J
DO WHILE K >= 1 ‘若有剩余,那么从最后一个一个放。
A(P) = A(P) + 1
K = K - 1
L = L - 1
LOOP
FOR I = 1 TO J
PRINT A(I);
NEXT I
5 楼
phile [专家分:2310] 发布于 2009-08-12 08:56:00
没给分!
6 楼
zihao1231 [专家分:150] 发布于 2009-12-08 19:43:00
放球的顺序有规律:
首先算出最多能放多少个盒子:
K=13
DO WHILE K>J
I=I+1
A(I)=I
J=J+I
LOOP
最后得出13个球最多放4个盒子:
放球时所有能放的盒子先放,第一个放1,第二个放2,第三个放3……
放完以后还剩13-(1+2+3+4)=3个球。
最后球依次往前放,第四个+1=5,第三个+1=4,第二个+1=3
最后四个盒子就有:1,3,4,5
程序同一楼。
我来回复