pascal 奇数阶魔方阵 注意审题 要完整的代码 魔阵是用自然数1,2,3…,n平方(n为奇数),填n阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等.奇数阶魔
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 10:10:29
pascal 奇数阶魔方阵 注意审题 要完整的代码 魔阵是用自然数1,2,3…,n平方(n为奇数),填n阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等.奇数阶魔
pascal 奇数阶魔方阵 注意审题 要完整的代码
魔阵是用自然数1,2,3…,n平方(n为奇数),填n阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等.奇数阶魔阵的一个算法是将自然数数列从方阵的中间一行最后一个位置排起,每次总是向右上角排(即A[i,j]的下一个是A[i-1,j+1]).但若遇以下四种情形,则应修正排数法:
(1) 列排完(即j>n时),则转排第一列;
(2) 行排完(即I
pascal 奇数阶魔方阵 注意审题 要完整的代码 魔阵是用自然数1,2,3…,n平方(n为奇数),填n阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等.奇数阶魔
要求好苛刻啊,你看看这个行不行
const
maxsize = 11;
type
sqrtype = array[1..maxsize,1..maxsize] of longint;
var
square :sqrtype;
size,row,sum :longint;
procedure makesquare(var sq :sqrtype;limit :longint);
var
num,r,c :longint;
begin
for r:=1 to limit do
for c:=1 to limit do
sq[r,c] := 0;
if (limit and 1)0 then
begin
r:=(limit+1) div 2;
c:=limit;
for num:=1 to limit*limit do
begin
if sq[r,c]0 then
begin
dec(r);
if rlimit then
dec(c,limit);
end;
end;
end;
procedure writesquare(var sq :sqrtype;limit :longint);
var
row,col :longint;
begin
for row:=1 to Limit do
begin
for col:=1 to (limit div 2) do
write(sq[row,2*col-1]:4,' ',sq[row,2*col]:4,' ');
writeln(sq[row,limit]:4);
end;
end;
begin
size:=3;
while (size