算法设计与分析问题:3阶魔方阵.要求在一个N xN的矩阵中填入1到n2(n的二次方)的数字(n为奇数),如图所示3阶魔方阵(1)证明:n阶魔方阵中每一行、每一列、每条对角线的累加和一定等于n(
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 19:55:25
![算法设计与分析问题:3阶魔方阵.要求在一个N xN的矩阵中填入1到n2(n的二次方)的数字(n为奇数),如图所示3阶魔方阵(1)证明:n阶魔方阵中每一行、每一列、每条对角线的累加和一定等于n(](/uploads/image/z/7274547-27-7.jpg?t=%E7%AE%97%E6%B3%95%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%88%86%E6%9E%90%E9%97%AE%E9%A2%98%EF%BC%9A3%E9%98%B6%E9%AD%94%E6%96%B9%E9%98%B5.%E8%A6%81%E6%B1%82%E5%9C%A8%E4%B8%80%E4%B8%AAN+xN%E7%9A%84%E7%9F%A9%E9%98%B5%E4%B8%AD%E5%A1%AB%E5%85%A51%E5%88%B0n2%28n%E7%9A%84%E4%BA%8C%E6%AC%A1%E6%96%B9%29%E7%9A%84%E6%95%B0%E5%AD%97%EF%BC%88n%E4%B8%BA%E5%A5%87%E6%95%B0%EF%BC%89%2C%E5%A6%82%E5%9B%BE%E6%89%80%E7%A4%BA3%E9%98%B6%E9%AD%94%E6%96%B9%E9%98%B5%EF%BC%881%EF%BC%89%E8%AF%81%E6%98%8E%EF%BC%9An%E9%98%B6%E9%AD%94%E6%96%B9%E9%98%B5%E4%B8%AD%E6%AF%8F%E4%B8%80%E8%A1%8C%E3%80%81%E6%AF%8F%E4%B8%80%E5%88%97%E3%80%81%E6%AF%8F%E6%9D%A1%E5%AF%B9%E8%A7%92%E7%BA%BF%E7%9A%84%E7%B4%AF%E5%8A%A0%E5%92%8C%E4%B8%80%E5%AE%9A%E7%AD%89%E4%BA%8En%28)
算法设计与分析问题:3阶魔方阵.要求在一个N xN的矩阵中填入1到n2(n的二次方)的数字(n为奇数),如图所示3阶魔方阵(1)证明:n阶魔方阵中每一行、每一列、每条对角线的累加和一定等于n(
算法设计与分析问题:3阶魔方阵.
要求在一个N xN的矩阵中填入1到n2(n的二次方)的数字(n为奇数),如图所示3阶魔方阵
(1)证明:n阶魔方阵中每一行、每一列、每条对角线的累加和一定等于n(n2+1)/2;
(2)设计蛮力算法生成n阶魔方阵.还有其他更好的算法吗?
算法设计与分析问题:3阶魔方阵.要求在一个N xN的矩阵中填入1到n2(n的二次方)的数字(n为奇数),如图所示3阶魔方阵(1)证明:n阶魔方阵中每一行、每一列、每条对角线的累加和一定等于n(
如果我们将1,2,……n2按某种规则依次填入到方阵中,得到的恰好是奇次魔方阵,这个规则可以描述如下:
(1)首先将1填在方阵第一行的中间,即(1,(n+1)/2)的位置;
(2)下一个数填在上一个数的主对角线的上方,若上一个数的位置是(i,j),下一个数应填在(i1,j1),其中i1=i-1、j1=j-1.
(3)若应填写的位置下标出界,则出界的值用n 来替代;即若i-1=0,则取i1=n;若j-1=0,则取j1=n.
(4)若应填的位置虽然没有出界,但是已经填有数据的话,则应填在上一个数的下面(行加1,列不变),即取i1=i+1,j1=j.
这样循环填数,直到把n*n个数全部填入方阵中,最后得到的是一个n阶魔方阵.
main( )
{int i,j,i1,j1,x,n,t,a[100][100];
print(“input an odd number:”);
input(n);
if (n mod 2=0) {print(“input error!”); return;}
for( i=1;i