中易网

pascal奇数魔阵 源程序代码

答案:2  悬赏:0  
解决时间 2021-02-19 13:53
魔阵是用自然数1,2,3…,n平方(n为奇数),填n阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等。奇数阶魔阵的一个算法是将自然数数列从方阵的中间一行最后一个位置排起,每次总是向右上角排(即A[i,j]的下一个是A[i-1,j+1])。但若遇以下四种情形,则应修正排数法:
  (1) 列排完(即j>n时),则转排第一列;
  (2) 行排完(即I<1时),则转排第n行(最后一行);
  (3) 若Aij已排进一个自然数,则排原数所在位置的左边一个格子,Ai,j-1。
例如3阶方阵,则按上述算法可排成:
2 7 6
9 5 1
4 3 8

最好附上说明,马上要用的最多一个小时……
最佳答案
var a:array[1..49,1..49] of integer;
n,i,j,count:longint;
begin
fillchar(a,sizeof(a),0);
readln(n);
j:=n; i:=n div 2+1; a[i,j]:=1;
for count:=2 to n*n do
begin
dec(i); inc(j);
if j>n then j:=1;
if i<1 then i:=n;
while a[i,j]<>0 do
dec(j);
a[i,j]:=count;
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]);
writeln;
end;
end.
全部回答
程序已经编译通过... 运行后却发现有点问题... 经手动计算发现是题目的问题... 如果按照第(3)种情况来修正排法 那么填入4之前数阵为 2 0 0 0 0 1 0 3 0 (未填入的用0代替) 此时i,j指着3的位置,右上移一位后就指到了1的位置... 按(3)来说就是左移一格,填入4,方阵: 2 0 0 0 4 1 0 3 0 与题目中的情况不符... 请确定题目有无错... 再附上本人参照此"有可能错误"的题目所编出的程序代码 var a:array[1..49,1..49] of integer; n,i,j,count:longint; begin fillchar(a,sizeof(a),0); readln(n); j:=n; i:=n div 2+1; a[i,j]:=1; for count:=2 to n*n do begin dec(i); inc(j); if j>n then j:=1; if i<1 then i:=n; while a[i,j]<>0 do dec(j); a[i,j]:=count; end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]); writeln; end; end. 请核实... 还有...不是说有4种情况需修正么?怎么只写了3种? 再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我家的白墙被椅子背蹭了好多黑的,有什么办法
我于2010年投保了国寿福禄满堂养老年金保险分
我在深圳,办的是中信银行的卡从银行寄卡到我
女人百分百专业美容护肤中心这个地址在什么地
微商营销和直销,传销的区别
充电宝是通用的吗?
怎么在导线力学特性曲线里看弧垂
松榆东里第一小区西南门地址有知道的么?有点
中国象棋初级教程 象棋入门(修订版) 哪本好
韩剧《我的公主》 谁是真正的公主,是李雪还
急!急!急!我女朋友要我写一份年级长策划书
脸油的人用什么BB霜或者隔离霜?
求天气变化的文章和图片
刘家尧镇在什么地方啊,我要过去处理事情
想问下,05年读的成人夜大,毕业时间年月是几
推荐资讯
计算机程序语言中的“END IF”和“ELSE”有什
谁知道青蛙下蛋怎么做?
09年奥迪a6胎压传感器在什么地方
关于X的方程9X-2=KX+7的解是自然数,求整数K
如何才能买到德国二战是的军装复制品,图片上
邮政路地址有知道的么?有点事想过去
什么时候该使用内部类及使用内部类的好处
侯店村怎么去啊,有知道地址的么
如果进项票比销项票的时间晚,且不在同一个月
peak智客 怎么关闭自动续费
供销超市中牟官渡大街店我想知道这个在什么地
房地产开发一级资质代办多少钱
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?