蛇形方阵
qbasic吧
全部回复
仅看楼主
level 5
lingfei067 楼主
CLS
INPUT n
DIM a(n, n)
p$ = STRING$(LEN(STR$(n * n)), "#")
x = 1: y = 1: m = 1
a(x, y) = m
DO
IF x + 1 <= n THEN
   x = x + 1: GOSUB pin
ELSE
   IF y + 1 <= n THEN y = y + 1: GOSUB pin
END IF
WHILE x - 1 >= 1 AND y + 1 <= n
x = x - 1: y = y + 1: GOSUB pin
WEND
IF y + 1 <= n THEN
   y = y + 1: GOSUB pin
ELSE
   IF x + 1 <= n THEN x = x + 1: GOSUB pin
END IF
WHILE x + 1 <= n AND y - 1 >= 1
   x = x + 1: y = y - 1: GOSUB pin
WEND
LOOP WHILE x <> n OR y <> n
FOR i = 1 TO n
FOR j = 1 TO n
    PRINT USING p$; a(i, j);
NEXT j
PRINT
NEXT i
END
pin:
   m = m + 1
   a(x, y) = m
RETURN
------------------------------------
? 5
   1   3   4 10 11
   2   5   9 12 19
   6   8 13 18 20
   7 14 17 21 24
15 16 22 23 25
2011年01月08日 20点01分 1
level 5
lingfei067 楼主
?   5
     1     3     4   10   11
     2     5     9   12   19
     6     8   13   18   20
     7   14   17   21   24
   15   16   22   23   25
2011年01月08日 20点01分 2
1