回 帖 发 新 帖 刷新版面

主题:[讨论]巧妙装球

装球,设有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个回复)

沙发

第一个条件很简单,
第二个条件也简单,
第三个条件更简单,
第四个条件的意思其实是最多与最少之差
那更简单.
明年再写

板凳

简单
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 楼

什么意思? 请phile能解释一下吗!

4 楼

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 楼

没给分!

6 楼

放球的顺序有规律:
首先算出最多能放多少个盒子:
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
程序同一楼。

我来回复

您尚未登录,请登录后再回复。点此登录或注册