回 帖 发 新 帖 刷新版面

主题:xun hua n

楼主
原始的Joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,…,n。
     从编号是1的人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,
     数到第m个人又出列,…,如此反复直到所有的人全部出列为止。
     比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。
     现在的问题是:假设有k个好人和k个坏人。好人的编号的1到k,坏人的编号是k+1到2k。
     我们希望求出m的最小值,使得最先出列的k个人都是坏人。
     输入:仅有的一个数字是k(0 < k <14)。
     输出:使得最先出列的k个人都是坏人的m的最小值。
     输入样例:4
     输出样例:30

回复列表 (共1个回复)

沙发

DECLARE SUB chulie (a!, b!)
DIM SHARED f, k
CLS
INPUT k
DO
  m = m + 1
  CALL chulie(2 * k, m)
  IF f = 1 THEN PRINT m: END
LOOP
END

SUB chulie (a, b)
    REDIM c(a): FOR i = 1 TO a: c(i) = 1: NEXT i
    i = 0: j = 0: s = a
    DO
      j = j + 1
      DO
        i = i + 1
        IF i > a THEN i = 1
      LOOP UNTIL c(i) = 1
      IF j = b THEN
         c(i) = 0: j = 0: s = s - 1
         IF i <= k THEN f = 0: EXIT SUB
         IF s = k THEN f = 1: EXIT SUB
      END IF
    LOOP
END SUB

我来回复

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