回 帖 发 新 帖 刷新版面

主题:8月7号发的超难迷宫题!MOZ大哥,请帮我改进一下,谢了!

MOZ大哥:过两天就要考试了,可这道题还是没什么好办法改,能帮我改一下程序吗?看了您那么多精妙的回帖,真让人佩服!小弟这里谢谢了!

回复列表 (共3个回复)

沙发

很抱歉,
你的超难题目我无法解决。
因为我无法理解,
我没法清楚的看明白你的意图。
真要改的话,绝对是面目全非。

板凳

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 楼

thank you very much!

我来回复

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