haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 初中教育 > 学科竞赛学科竞赛

方陈填数

发布时间:2013-12-18 11:35:59  

1995p2.方阵填数

在一个N?N的方阵中,填入1,2,……,N?N个数,并要求构成如下的格式: 例: N=6 N=5 16 17 18 19 20 1 13 14 15 16 1 15 30 31 32 21 2 12 23 24 17 2 14 29 36 33 22 3 11 22 25 18 3 13 28 35 34 23 4 10 21 20 19 4 12 27 26 25 24 5 9 8 7 6 5 11 10 9 8 7 6 参考程序:

const

di:array[0..3,0..1] of integer=((1,0),(0,-1),(-1,0),(0,1));{四个方向的增量} var

sq:array[0..11,0..11] of word;{保存方阵中的数}

n:word;{ 方阵边长}

procedure create;

var i:word;

begin

fillchar(sq,sizeof(sq),0);{清0}

for i:=1 to n do{给方阵边界赋值}

begin

sq[0,i]:=maxint;sq[n+1,i]:=maxint;

sq[i,0]:=maxint;sq[i,n+1]:=maxint;

end;

end;

procedure solve;

var i,x,y,op:word;

begin

x:=1; y:=n;{设置初始坐标}

op:=0; {设置初始方向}

for i:=1 to n*n do

begin

sq[x,y]:=i;{在方阵中填数}

if sq[x+di[op,0],y+di[op,1]]>0{判断当前方向是否还能填数} then op:=(op+1) mod 4;{转入下一方向}

inc(x,di[op,0]);inc(y,di[op,1]); {转入下一坐标}

end;

end;

procedure print;

var i,j:word;

begin

for i:=1 to n do

begin

for j:=1 to n do write(sq[i,j]:4);

writeln;

end;

end;

begin

readln(n);{读入N}

create;{初始化}

solve;{填数}

print;{输出}

end.

上一篇:过河卒
下一篇:算法分析
网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com