作业帮 > 数学 > 作业

描述奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.输入一个小于等于25的

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/05/17 01:08:52
描述
奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.
输入
一个小于等于25的正奇数.
输出
奇数阶魔方阵,每个数据的单场宽为4.
样例输入
5
样例输出
11 10 4 23 17
18 12 6 5 24
25 19 13 7 1
2 21 20 14 8
9 3 22 16 15
提示
[分析]:
魔方阵是这样一个方阵,由1,2,3,4……n*n组成,其行、列、对角线元素之和均为常数,比如n=3时的方阵为:
4 3 8
9 5 1
2 7 6
n=5 时的魔方阵可以为:
11 10 4 23 17
18 12 6 5 24
25 19 13 7 1
2 21 20 14 8
9 3 22 16 15
仔细观察上两个方阵可以找出如下的数字“走”的规律:首先将1放置在第(n+1)/2行、第m列的位置上.要放的数增加1,将上一数放的位置行号和列号都增加1,如果增加后超过边界了(即大于n了),则相应的超边界的行号或列号变为1,由新的行号和列号确定的新位置就是新数要放的位置,但有时会有“撞车”的现象,也就是该位置上已放过数字了,此时不能再放了,怎么办?不好走就退回原地再换个方向吧,哪个方向好呢?就是左转了,因为这种情况下一般好象是左边空的.(左转的办法是行号不变,列号减1,此时要不要考虑出界的情况呢?按理应考虑出界的情况的,不过我试了好几个数据都没有发现这种情况,为安全起见,还是加个判定吧)上面这个填数过和直到n*n填完为止.
用free pascal做
如果右上方有数,则退回,试探自己下方1个数,如:5
1
则填:5
1
2
给出程序(两个好像不大一样,但答案都是对的,先凑合着看吧):
program jishumofangzhen;
var
magic:array[1..100,1..100] of integer;
i,j,m,h,l,n:integer;
begin
read(n);
fillchar(magic,sizeof(magic),0);
i:=1;j:=(n div 2)+1; magic[i,j]:=1; m:=1;
repeat
m:=m+1;;h:=i-1;l:=j-1;
if h=0 then h:=n;
if l=0 then l:=n;
if magic[h,l]0 then
begin
magic[i+1,j]:=m;
i:=i+1;
end
else
begin
magic[h,l]:=m;
i:=h;j:=l;
end;
until m=n*n;
for i:=1 to n do
begin
for j:=1 to n do
write(magic[i,j]:5);
writeln();
end;
end.
输出魔方阵,魔方阵是指这样的方阵,它的每一行,每一列和对角线之和均相等 求c语言,输出魔方阵,所谓的魔方阵是指每一行每一列及对角线之和均相等(魔方阵阶数只能是奇数) 在图片框中显示一个n*n魔方阵(其中n必须是奇数).魔方阵的每一行,每一列对角线之和均相等. c语言输出魔方阵,所谓魔方阵是指这样的方阵,她的每一行,每一列和对角线之和相 用C语言编程打印出由1到n^2的自然数构成的魔方阵,n由键盘输入.魔方阵的每一行每一列和对角线均相等. 图是一个不完整的幻方,已知它的每一行,每一列,两条对角线上的三个数之和均相等. 求:每一行每一列对角线的和相等的阵列(魔方阵—),要求输出1—n的平方的自然数构成的魔方阵. 一、图1-17是一个不完整的幻方,一直他的每一行、每一列、两条对角线上的三个数之和均相等. 下图是个魔方块.魔方块是图中每一行、每一列、每一对角线的数字相加之后的结果是相同的. 奇数幻方对于输入的奇数m,将1到m*m这些自然数填入m行m列格子中,使每行、每列及对角线的和相等.输出一种填法及这个相等 如图1-1.1-1在方格表在方格表中的格子上填数使每一行每一列及两条对角线中所填数的和均相等则X的值为( ) C语言课程设计:魔方阵,将1到n*n的自然数摆成n行n列的方阵,要求每一行,每一列,二条对角线上的数加起来都