回 帖 发 新 帖 刷新版面

主题:蛇型矩阵

矩阵按下图排列,这是个5*5矩阵,要求输入矩阵范围在3到10
15   16   22   23   25
7    14   17   21   24
6    8    13   18   20
2    5    9    12   19
1    3    4    10   11
    各位,考虑一下哦...谢谢啦

回复列表 (共27个回复)

21 楼

偶的代码:原创的哦。
CLS
INPUT wid
sz = wid * wid
FOR Y = 1 TO wid
    ot = sz: PRINT USING "####"; ot;
    IF Y MOD 2 THEN sz = sz - Y - Y ELSE sz = sz - 1
    FOR X = 1 TO wid - 1
        IF wid - Y >= X THEN
            IF X MOD 2 XOR Y MOD 2 THEN ot = ot - (X + X) ELSE ot = ot - (Y + Y - 1)
        ELSE
            IF X MOD 2 XOR Y MOD 2 THEN ot = ot - ((wid - Y) * 2 + 1) ELSE ot = ot - (wid - X) * 2
        END IF
        PRINT USING "####"; ot;
    NEXT X
    PRINT
NEXT Y
END

22 楼

http://bbs.pfan.cn/post-288094.html

这里思路哦。非原创写不出来的哦。

23 楼

CLS
我做出来了:
INPUT N
DIM A(N, N)
I = N: J = 1
S = (1 + N) * N / 2
FOR K = 1 TO S
    A(I, J) = K
    A(N + 1 - I, N + 1 - J) = N * N + 1 - K
    IF (I + J) MOD 2 = 0 THEN
       IF J = 1 THEN I = I - 1 ELSE I = I - 1: J = J - 1
    ELSE
       IF I = N THEN J = J + 1 ELSE J = J + 1: I = I + 1
    END IF
NEXT K
FOR I = 1 TO N
  FOR J = 1 TO N
      PRINT USING "####"; A(I, J);
  NEXT J
  PRINT
NEXT I

24 楼

INPUT N
DIM A(N, N)
I = N: J = 1
S = (1 + N) * N / 2
FOR K = 1 TO S
    A(I, J) = K
    A(N + 1 - I, N + 1 - J) = N * N + 1 - K
    IF (I + J) MOD 2 = 0 THEN
       IF J = 1 THEN I = I - 1 ELSE I = I - 1: J = J - 1
    ELSE
       IF I = N THEN J = J + 1 ELSE J = J + 1: I = I + 1
    END IF
NEXT K
FOR I = 1 TO N
  FOR J = 1 TO N
      PRINT USING "####"; A(I, J);
  NEXT J
  PRINT
NEXT I

25 楼

大家好像都在用数组嘛。先把数据生成好存入数组,再一次性输出。

道是6楼的代码不错,用 locate 句语。不错哦。除了 litboat 兄,大家都在用数组。
能不能发段不用数组的代码啊?

看看小弟的代码,没有用数组哦。

26 楼

CLS
INPUT wid
sz = wid * wid
FOR Y = 1 TO wid
    ot = sz: PRINT USING "####"; ot;
    IF Y MOD 2 THEN sz = sz - Y - Y ELSE sz = sz - 1
    FOR X = 1 TO wid - 1
        IF wid - Y >= X THEN
            IF X MOD 2 XOR Y MOD 2 THEN ot = ot - (X + X) ELSE ot = ot - (Y + Y - 1)
        ELSE
            IF X MOD 2 XOR Y MOD 2 THEN ot = ot - ((wid - Y) * 2 + 1) ELSE ot = ot - (wid - X) * 2
        END IF
        PRINT USING "####"; ot;
    NEXT X
    PRINT
NEXT Y
END

27 楼

CLS
INPUT "n="; n
DIM a(n, n)
x = 1: y = 1: dx1 = 0: dy1 = 1: dx2 = 1: dy2 = -1
a(1, 1) = 1: a(n, n) = n ^ 2
FOR i = 2 TO n
  a(x + dx1, y + dy1) = a(x, y) + 1
  x = x + dx1: y = y + dy1
  a(n + 1 - x, n + 1 - y) = n ^ 2 + 1 - a(x, y)

  FOR j = 1 TO i - 1
    a(x + dx2, y + dy2) = a(x, y) + 1
    x = x + dx2: y = y + dy2
    a(n + 1 - x, n + 1 - y) = n ^ 2 + 1 - a(x, y)
  NEXT j

  SWAP dx1, dy1: SWAP dx2, dy2
NEXT i

CLS
FOR i = 1 TO n
FOR j = 1 TO n
  LOCATE n + 1 - i, 3 * j: PRINT a(j, i);
NEXT j
NEXT i

我来回复

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