主题:MOZ赶快来做这道难题!!!
网虫一号
[专家分:1230] 发布于 2007-08-17 10:30:00
在一线性七个格位置的图上有两种不同颜色的棋子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个回复)
沙发
moz [专家分:37620] 发布于 2007-08-17 10:43:00
這題我若干年前做過,你去翻翻舊貼吧.
板凳
hxy_anhui [专家分:320] 发布于 2009-01-29 21:35:00
这不简单吗,用回溯就能解决问题。不信你看。
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
我来回复