蛇形方阵
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
level 5
CLS : INPUT m: DIM a(m, m): k = 0
FOR x = 1 TO m ,x为按蛇形前进的路径上的斜线编号
IF x MOD 2 = 0 THEN
th = m: tl = m + 1 - x 'th、tl分别为编号为x的斜线的起始位置坐标
FOR i = 1 TO x '编号为x的斜线上,有x个单元
k = k + 1: a(th, tl) = k: th = th - 1: tl = tl + 1
NEXT i '此for语句是为了往x号斜线经过的单元填数
ELSE '偶数号斜线上,沿箭头方向,行号递减,列号递增
th = m + 1 - x: tl = m
FOR i = 1 TO x
k = k + 1: a(th, tl) = k: th = th + 1: tl = tl - 1
NEXT i
END IF
NEXT x
'以上为右下三角形矩阵范围内的程序,以下为左上角部分,解释几乎相同(略)
FOR x = m - 1 TO 1 STEP -1
IF x MOD 2 = 0 THEN
th = x: tl = 1
FOR i = 1 TO x
k = k + 1: a(th, tl) = k: th = th - 1: tl = tl + 1
NEXT i
ELSE
th = 1: tl = x
FOR i = 1 TO x
k = k + 1: a(th, tl) = k: th = th + 1: tl = tl - 1
NEXT i
END IF
NEXT x
FOR i = 1 TO m
FOR j = 1 TO m
PRINT USING "###"; a(i, j);
NEXT j: PRINT
NEXT i
END
2011年11月01日 11点11分 4
level 1
公式:
CLSINPUT NDIM TR(N, N)TR(1, 1) = 1: TR(N, N) = N * N
FOR I = 1 TO N - 1
IF I MOD 2 = 1 THEN
FOR J = 0 TO I
TR(I + 1 - J, 1 + J) = TR(I, 1) + 1 + J
TR(N - I + J, N - J) = TR(N - I + 1, N) - 1 - J
NEXT J
ELSE
FOR J = 0 TO I
TR(1 + J, I + 1 - J) = TR(1, I) + 1 + J
TR(N - J, N - I + J) = TR(N, N + 1 - I) - 1 - J
NEXT J
END IF
NEXT I
FOR I = 1 TO N
fOR J = 1 TO N
PRINT USING "###"; TR(I, J);
NEXT J
PRINT
NEXT I
end
2011年11月08日 13点11分 5
level 1
自编的蛇型
CLS
INPUT "JI CHENG JI:",N
DIM A(N*2,N*2)
DO
BJ=BJ+1
IF BJ>N THEN M=M-((BJ-N)*2-1)
FOR I=1 TO BJ
M=M+1:C=BJ-I+1
IF I MOD 2=0 THEN A(I,C)=M ELSE A(C,I)=M
NEXT I
LOOP UNTIL M>=N*N
FOR I=1 TO N
FOR J=1 TO N
PRINT USING"####";A(I,J);
NEXT J
PRINT
NEXT I
END
2017年07月14日 02点07分 6
1