主题:8月7号发的超难迷宫题!MOZ大哥,请帮我改进一下,谢了!
am1028
[专家分:10] 发布于 2006-08-13 02:25:00
MOZ大哥:过两天就要考试了,可这道题还是没什么好办法改,能帮我改一下程序吗?看了您那么多精妙的回帖,真让人佩服!小弟这里谢谢了!
回复列表 (共3个回复)
沙发
moz [专家分:37620] 发布于 2006-08-14 12:32:00
很抱歉,
你的超难题目我无法解决。
因为我无法理解,
我没法清楚的看明白你的意图。
真要改的话,绝对是面目全非。
板凳
moz [专家分:37620] 发布于 2006-08-14 13:32:00
CLS
OPEN "0541.in" FOR INPUT AS #1
INPUT #1, n
PRINT n;
REDIM A(n, n)
FOR i = 1 TO n
PRINT
FOR j = 1 TO n
INPUT #1, A(i, j)
PRINT A(i, j);
NEXT j, i
DIM p(n * n, 2)
q = 1
p(q, 0) = 0
p(q, 1) = 1
p(q, 2) = 1
LOCATE 2, 1
COLOR 15, 0
PRINT 0;
DO
DO
p(q, 0) = p(q, 0) + 1
x = p(q, 1)
y = p(q, 2)
SELECT CASE p(q, 0)
CASE 1: x = p(q, 1) - 1
CASE 2: y = p(q, 2) + 1
CASE 3: x = p(q, 1) + 1
CASE 4: y = p(q, 2) - 1
CASE ELSE
p(q, 0) = 0
LOCATE p(q, 1) + 1, p(q, 2) * 3 - 2
COLOR 7, 0
PRINT 0;
p(q, 1) = 0
p(q, 2) = 0
q = q - 1
EXIT DO
END SELECT
IF x >= 1 AND x <= n AND y >= 1 AND y <= n THEN
IF A(x, y) = 0 THEN
FOR i = 1 TO q
IF x = p(i, 1) AND y = p(i, 2) THEN EXIT FOR
NEXT
IF i > q THEN
IF x = n AND y = n THEN
k = n * n - (q + 1)
IF k > max THEN max = k
ELSE
q = q + 1
p(q, 1) = x
p(q, 2) = y
LOCATE x + 1, y * 3 - 2
COLOR 15, 0
PRINT 0;
EXIT DO
END IF
END IF
END IF
END IF
LOOP
'e$ = INPUT$(1) [color=0000ff]把前面的注释符去掉,你就可以一步一步的跟踪了[/color]
LOOP UNTIL q = 1
CLS
PRINT max
END
3 楼
am1028 [专家分:10] 发布于 2006-08-14 14:13:00
thank you very much!
我来回复