回 帖 发 新 帖 刷新版面

主题:50

编写
1  2  6  7  15 
3  5  8  14 16  
4  9  13 17 22
10 12 18 21 23
11 19 20 24 25

回复列表 (共6个回复)

沙发

CLS
INPUT n                            
DIM a(n, n)
i = n                              
j = 1                               
di = -1                            
dj = -1                             
FOR k = 1 TO n * n
  a(i, j) = k
  i = i + di
  j = j + dj
  IF j > n AND i > n THEN
    i = i - 2
    j = n
    di = -1 * di
    dj = dj * -1
  ELSEIF i < 1 AND j < 1 THEN
    j = j + 2
    i = 1
    di = -1 * di
    dj = -1 * dj
  ELSEIF j < 1 THEN
    j = 1
    di = di * -1
    dj = dj * -1
  ELSEIF j > n THEN
    j = n
    i = i - 2
    di = di * -1
    dj = dj * -1
  ELSEIF i < 1 THEN
    j = j + 2
    i = 1
    di = di * -1
    dj = dj * -1
  ELSEIF i > n THEN
    i = n
    di = di * -1
    dj = dj * -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
SLEEP
END

板凳

1楼答案错误,输出的图形和楼主要求的不一致。但是算法思想是对的!

3 楼

FB程序,算法做了一点点改进
DIM AS INTEGER N
INPUT N
DIM AS INTEGER A(N,N),I,J,D,K
I = 1
J = 1
D = 1
FOR K = 1 TO N * N
    A(I, J) = K
    I = I - D
    J = J + D
    IF I > N THEN
        I = N
        J = J + 2
        D = 1
    ELSEIF J > N THEN
        J = N
        I = I + 2
        D = -1
    ELSEIF J < 1 THEN
        J = 1
        D = 1
    ELSEIF I < 1 THEN
        I = 1
        D = -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
SLEEP
END

4 楼

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

5 楼

我这个绝对是对的
CLS
INPUT N
DIM A(N, N)
FOR I = 1 TO N * 2 - 1
IF I <= N THEN
IF I MOD 2 = 0 THEN X = I + 1 ELSE X = 0
ELSE
IF I MOD 2 = 0 THEN X = X + 1
END IF
FOR J = 1 TO N - ABS(N - I)
IF I MOD 2 = 0 THEN X = X - 1 ELSE X = X + 1
K = K + 1: A(X, I + 1 - X) = K
NEXT J, I
FOR I = 1 TO N
FOR J = 1 TO N
PRINT USING "###"; A(I, J);
NEXT J: PRINT
NEXT I
END

6 楼

5楼很强!程序很简单而且正确!

我来回复

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