主题:求一个回转填数的pascal程序
wjl1024
[专家分:0] 发布于 2006-08-04 22:02:00
可以找到c语言的可我又看不懂,
请高手指教。
输出如下形式的数组:如 n=5 时
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
程序若能有解释和算法分析更好了
谢谢各位
回复列表 (共2个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2006-08-05 15:34:00
l:方向 a:横坐标 b:竖坐标 死做,哈哈
const d:array[1..4,1..2]of longint=((-1,0),(0,1),(1,0),(0,-1));
var
s:array[0..101,0..101]of longint;
i,j,k,l,m,n,a,b:longint;
begin
readln(n);
for i:=0 to n+1 do
for j:=0 to n+1 do
s[i,j]:=100;
for i:=1 to n do
for j:=1 to n do
s[i,j]:=0;
a:=1;b:=0;l:=2;k:=1;
while k<>n*n+1 do
begin
if s[a+d[l,1],b+d[l,2]]=0 then begin
a:=a+d[l,1];
b:=b+d[l,2];
s[a,b]:=k;
inc(k);
end
else begin
inc(l);
if l=5 then l:=1;
end;
end;
for i:=1 to n do
begin
for j:=1 to n do
write(s[i,j]:5);
writeln;
end;
end.
加分哦
板凳
济公二世 [专家分:200] 发布于 2006-08-17 16:08:00
用搜索呀
我来回复