主题:[原创]蛇形矩阵---抛砖引玉
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
'*****************以上是本人弄懂的n维蛇形方阵的编程,现笔者求以下(h,n)维蛇形矩阵的源程序的详细解释,请同意我与您单独交流。QQ:328353313 ********
----------------------------------------------------------
1 2 6
3 5 7
4 8 12
9 11 13
10 14 15
----------------------------------------------------------
cls:input "h,n:",h,n '以下程序是怎么形成的?突破口在哪里?
dim s(h,n)
xx=1:yy=-1 '此处的xx、yy变量起什么作用?
for i=1 to h*n
x=x+xx
y=y+yy
if x<1 or x>h or y<1 or y>n then swap xx,yy '为何在满足以上条件时交换?为何要交换?
if x>h then
x=h
y=y+2 'x和y为什么是这样的变化规律?
endif
if y>n then
y=n
x=x+2
endif
if x<1 then x=1
if y<1 then y=1
s(x,y)=i
next
for i=1 to h
print
for j=1 to n
print using "###";s(i,j);
next j,i
end
'本程序简捷,且不一定要求是方阵,但我不知道是以什么为突破口的?语句如何解释?请哪位大侠指导为盼!
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
'*****************以上是本人弄懂的n维蛇形方阵的编程,现笔者求以下(h,n)维蛇形矩阵的源程序的详细解释,请同意我与您单独交流。QQ:328353313 ********
----------------------------------------------------------
1 2 6
3 5 7
4 8 12
9 11 13
10 14 15
----------------------------------------------------------
cls:input "h,n:",h,n '以下程序是怎么形成的?突破口在哪里?
dim s(h,n)
xx=1:yy=-1 '此处的xx、yy变量起什么作用?
for i=1 to h*n
x=x+xx
y=y+yy
if x<1 or x>h or y<1 or y>n then swap xx,yy '为何在满足以上条件时交换?为何要交换?
if x>h then
x=h
y=y+2 'x和y为什么是这样的变化规律?
endif
if y>n then
y=n
x=x+2
endif
if x<1 then x=1
if y<1 then y=1
s(x,y)=i
next
for i=1 to h
for j=1 to n
print using "###";s(i,j);
next j,i
end
'本程序简捷,且不一定要求是方阵,但我不知道是以什么为突破口的?语句如何解释?请哪位大侠指导为盼!