切换到宽版
  • 5981阅读
  • 2回复

求"奇数魔方阵"祥解 [复制链接]

上一主题 下一主题
离线wwwkkll
 
只看楼主 倒序阅读 0 发表于: 2008-01-02
把整数1到n*n(n为奇数)拍成一个n*n方阵,使方阵中的每一行,每一列以及对角线上的数之和都相同。
离线xyj
只看该作者 1 发表于: 2008-01-03
连续摆数法
设定起始点在[1,n div 2+1]
循环(n^2-1)次每次向量[-1,1]溢出转到另一面,直到与原数相撞,中断向量[1,0]
离线xyj
只看该作者 2 发表于: 2008-01-03
var
a:array[1..101,1..101] of integer;
n,k,x,y:integer;
begin
read(n);
fillchar(a,sizeof(a),0);
x:=1;
y:=n div 2+1;
a[x,y]:=1;
for k:=2 to n*n do
  begin
  x:=x-1;
  y:=y+1;
  if x=0 then x:=n;
  if y=n+1 then y:=1;
  if a[x,y]<>0
    then
    begin
      x:=x+2;
      y:=y-1;
    end;
  if x=n+1 then x:=1;
  if x=n+2 then x:=2;
  if y=0 then y:=n;
  a[x,y]:=k;
  end;
for x:=1 to n do
  begin
  for y:=1 to n do
    write(a[x,y]:4);
  writeln;
  end;
end.
快速回复
限100 字节
 
上一个 下一个