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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 14:57:46
描述奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.输入一个小于等于25的正奇数.输出奇数阶魔方阵,每个数据的单场宽为4.样例输入5样

描述奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.输入一个小于等于25的正奇数.输出奇数阶魔方阵,每个数据的单场宽为4.样例输入5样
描述
奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.
输入
一个小于等于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做

描述奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.输入一个小于等于25的正奇数.输出奇数阶魔方阵,每个数据的单场宽为4.样例输入5样
如果右上方有数,则退回,试探自己下方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.

我这个是把你的逆时针旋转90度的:
#include
void main()
{int a[25][25]={0},p,k,i,j,n;
lp:printf("Mofang Jie:");
scanf("%d",&n);
if(n<1||n>25||(n+1)%2!=0)goto lp;
p=0;k=n/2;

全部展开

我这个是把你的逆时针旋转90度的:
#include
void main()
{int a[25][25]={0},p,k,i,j,n;
lp:printf("Mofang Jie:");
scanf("%d",&n);
if(n<1||n>25||(n+1)%2!=0)goto lp;
p=0;k=n/2;
a[p][k]=1;
for(i=2;i<=n*n;i++)
{if((i-1)%n==0)
{if(p==n-1)p=0;
else p++;
}
else
{if(p==0)p=n-1;
else p--;
if(k==n-1)k=0;
else k++;
}
a[p][k]=i;
}
for(i=0;i {for(j=0;j printf("%4d",a[i][j]);
printf("\n");
}
}

收起

谁会靠比,很爽的

谁会靠比,很爽的

描述奇数阶魔方阵(又称奇数幻方),所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.输入一个小于等于25的正奇数.输出奇数阶魔方阵,每个数据的单场宽为4.样例输入5样 求c语言,输出魔方阵,所谓的魔方阵是指每一行每一列及对角线之和均相等(魔方阵阶数只能是奇数) 11阶奇数幻方破解答案 vb魔方矩阵(n为奇数) pascal 奇数阶魔方阵 注意审题 要完整的代码 魔阵是用自然数1,2,3…,n平方(n为奇数),填n阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等.奇数阶魔 所谓“幻方”就是一个n*n 的矩形,在这个矩形中有规律的填入数值为 1—n2个数字,并且满足它的行,列,对角线的和相等.输入奇数n,输出n阶的奇数幻方 奇数幻方的口诀是谁发明的 奇数幻方的口诀是谁发明的 负偶数,正奇数,负奇数用描述法表示 奇数+奇数+奇数+奇数+奇数+奇数+奇数=36 奇数+奇数=(),奇数-奇数=() 奇数+偶数=(),奇数x偶数=() 用描述法表示奇数的集合 用性质描述法表示:奇数集 在图片框中显示一个n*n魔方阵(其中n必须是奇数).魔方阵的每一行,每一列对角线之和均相等.跪求 ,VB 高手帮小弟 做个n*n魔方阵程序, 已知n为奇数,则(-x方)n次方+(-xn方)次方=? 算法设计与分析问题:3阶魔方阵.要求在一个N xN的矩阵中填入1到n2(n的二次方)的数字(n为奇数),如图所示3阶魔方阵(1)证明:n阶魔方阵中每一行、每一列、每条对角线的累加和一定等于n( 奇数+偶数=()奇数+奇数=() 奇数-偶数=()偶数-奇数=() 奇数x奇数=()奇数x偶数=(奇数+偶数=()奇数+奇数=()奇数-偶数=()偶数-奇数=()奇数x奇数 用描述法表示,所有奇数组成的集合,给好评,谢谢,(高悬赏)