主题:蛇型矩阵
下一个永远
[专家分:0] 发布于 2005-03-19 11:48:00
矩阵按下图排列,这是个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 楼
imjohnzj [专家分:1490] 发布于 2008-10-28 22:56:00
偶的代码:原创的哦。
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 楼
imjohnzj [专家分:1490] 发布于 2008-10-28 22:58:00
http://bbs.pfan.cn/post-288094.html
这里思路哦。非原创写不出来的哦。
23 楼
三国风云 [专家分:140] 发布于 2008-11-03 11:49:00
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 楼
woshilzh [专家分:0] 发布于 2008-11-10 21:50:00
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 楼
imjohnzj [专家分:1490] 发布于 2008-11-11 00:30:00
大家好像都在用数组嘛。先把数据生成好存入数组,再一次性输出。
道是6楼的代码不错,用 locate 句语。不错哦。除了 litboat 兄,大家都在用数组。
能不能发段不用数组的代码啊?
看看小弟的代码,没有用数组哦。
26 楼
imjohnzj [专家分:1490] 发布于 2008-11-11 00:31:00
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 楼
FFKK [专家分:1610] 发布于 2009-07-20 11:59:00
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
我来回复