回 帖 发 新 帖 刷新版面

主题:MOZ赶快来做这道难题!!!

在一线性七个格位置的图上有两种不同颜色的棋子A,B. 排列如下图所示,中间格的位置为空。
          ┎─┰─┰─┰─┰─┰─┰─┒
          ┃A┃A┃A┃  ┃B┃B┃B┃
          ┖─┸─┸─┸─┸─┸─┸─┚
   要求将A,B的现行位置交换,形成下图中的排列:
          ┎─┰─┰─┰─┰─┰─┰─┒
          ┃B┃B┃B┃  ┃A┃A┃A┃
          ┖─┸─┸─┸─┸─┸─┸─┚
   移动棋子的条件:
   (1) 每个格中只准放一个棋子。
   (2) 任意一个棋子均可移动一格放入空格内。
   (3) 一方的棋子均可跳过另一方的一个棋子进入空格。
   (4) 任何棋子不得跳跃两个或两个以上棋子(无论颜色同异)
   (5) 任何一个颜色棋子只能向前跳,不准向后跳。
   编程完成有关的移动,并且完成具有2N+1个格子的情形. 其中两种颜色各有
   N个棋子,且中间为空格.

回复列表 (共2个回复)

沙发

這題我若干年前做過,你去翻翻舊貼吧.

板凳

这不简单吗,用回溯就能解决问题。不信你看。
CLS
INPUT N
PRINT "    "; STRING$(N, "A") + " " + STRING$(N, "B")
DIM A$(-1 TO 2 * N + 3), X(500), Y(500), W$(500)
FOR I = 1 TO N
  A$(I) = "A"
  A$(I + N + 1) = "B"
NEXT I
Y$ = STRING$(N, "B") + " " + STRING$(N, "A")
I = 0: P = 1: X(P) = N + 1: A$(N + 1) = " "
DO
I = I + 1: X = 2 * N + 2
IF I = 1 AND A$(X(P) - 1) = "A" THEN X = X(P) - 1
IF I = 2 AND A$(X(P) + 1) = "B" THEN X = X(P) + 1
IF I = 3 AND A$(X(P) - 1) = "B" AND A$(X(P) - 2) = "A" THEN X = X(P) - 2
IF I = 4 AND A$(X(P) + 1) = "A" AND A$(X(P) + 2) = "B" THEN X = X(P) + 2
IF I <= 4 THEN
IF X >= 1 AND X <= N * 2 + 1 THEN
SWAP A$(X), A$(X(P)): P = P + 1: X(P) = X: Y(P) = I: I = 0
X$ = ""
FOR J = 1 TO N * 2 + 1
  X$ = X$ + A$(J)
NEXT J
W$(P) = X$
IF X$ = Y$ THEN
FOR I = 2 TO P
  PRINT USING "###"; I - 1;
  PRINT ":"; W$(I)
NEXT I
END
END IF
END IF
ELSE
I = Y(P): P = P - 1: SWAP A$(X(P + 1)), A$(X(P))
END IF
LOOP UNTIL P = 0
END

我来回复

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