主题:急求魔方高手!!
52787777
[专家分:0] 发布于 2005-03-28 21:41:00
比如输入3,得到图形
1 8 7
2 9 6
3 4 5
输入5,得到图形
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
所输出的图形都是正方形的,哪为高手能帮我?要经典的那种
回复列表 (共8个回复)
沙发
52787777 [专家分:0] 发布于 2005-03-28 22:02:00
难道没有人知道吗?
板凳
codepk [专家分:2800] 发布于 2005-03-28 22:27:00
这个不是魔方,
这个是螺旋方阵,你搜索一下,已经有n多贴子是这个内容了
3 楼
LSQ [专家分:220] 发布于 2005-07-20 10:20:00
10 input n
if n=3 then
? "1 8 7"
? "2 9 6"
? "3 4 5"
else
if n=5 then
? "1 16 15 14 13"
? "2 17 24 23 12"
? "3 18 25 22 11"
? "4 19 20 21 10"
? "5 6 7 8 9"
else
goto 10
end if
end if
end
4 楼
163111511 [专家分:90] 发布于 2005-07-20 16:19:00
用PASCAL编:
var j:integer;
n,i,k,x,y:byte;
r:array[1..25,1..25]of byte;
begin
write('n=');readln(n);
for x:=1 to n do
for y:=1 to n do r[x,y]:=0;
x:=0;y:=n;i:=0;k:=n;j:=1;
while i<n*n do
begin
for i:=i+1 to i+k do
begin
x:=x+j;
r[x,y]:=i;
end;
dec(k);
if j=1 then j:=-1 else j:=1;
for i:=i+1 to i+k do
begin
y:=y+j;
r[x,y]:=i;
end;
end;
for x:=1 to n do
begin
for y:=1 to n do write(r[x,y]:3);
writeln;
end;
end.
~{UbJGK3J1Uk5D#,DfJ1Uk5DOHWT<:MF!#~}
qbasic 论坛里有
5 楼
li010450 [专家分:70] 发布于 2005-07-22 18:39:00
书上也有啊
6 楼
傻傻的我 [专家分:0] 发布于 2005-08-05 10:23:00
这个很简单啊/我用QB给你编吧:
daclare sub disp ()
dim shared n as integer
input"n=";n
dim shared a(n,n)as integer
k=1
for i = 1 to n
for j = i to n-i+1
a(i,j)=k
k=k+1
next j
for j=i+1 to n-i+1
a(n-i+1,j)=k
k=k+1
next j
for j= n-i to i step -1
a(j,n-i+1)= k
k=k+1
next j
for j = n-i to i+1 step -1
a(i,j)=k
k=k+1
next j
next i
print "result="
disp
end
子程序如下: sub disp
for i = 1 to n
for j= 1to n
print using"####";a(i,j);
next j
print
next i
end sub
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
好了,这个持续编好了.我很喜欢编程序,特别是QB,我在学校计算机兴趣小组里编的.如果以后能和广大编程好友一起分享快乐.我很高兴.我的QQ:286451009,你们可以加我和我联系.希望爱编程序的朋友们和我一起探讨.我很乐意.
7 楼
编程黑客 [专家分:1660] 发布于 2005-08-11 23:00:00
cls
input n
dim a(n+1,n+1)
s=1:bj=n
do
do while a(i,j)=0 and i<=bj
a(i,j)=s
s=s+1
i=i+1
loop
i=i-1
j=j+1
do while a(i,j)=0 and j<=bj
a(i,j)=s
s=s+1
j=j+1
loop
j=j-1
i=i-1
do while a(i,j)=0 and i>=n+1-bj
a(i,j)=s
s=s+1
i=i-1
loop
i=i+1
j=j-1
do while a(i,j)=0 and j>=n+1-bj
a(i,j)=s
s=s+1
j=j-1
loop
j=j+1
i=i+1
loop until s>n*n
for i=1 to n
for j=1 to n
print a(i,j);
next j
print
next i
end
8 楼
dznick [专家分:60] 发布于 2005-08-26 09:24:00
Cls
INPUT "n="; n
Dim a(n, n) As Integer
i = 1
j = (n + 1) / 2
a(i, j) = 1
For k = 2 To n * n
i = i - 1: j = j - 1
If i < 1 And j >= 1 Then
i = i + n
ElseIf i >= 1 And j < 1 Then
j = j + n
ElseIf i < 1 And j < 1 Or a(i, j) <> 0 Then
i = i + 2: j = j + 1
End If
a(i, j) = k
Next k
For i = 1 To n
For j = 1 To n
Print USING; "#####"; a(i, j);
Next j
Rem PRINT
Print
Next i
End
我来回复