n阶魔方阵:奇数阶魔方阵问题

奇数阶魔方阵是指由1到n2(n为奇数)个自然数构成的n*n的方阵,它的每一行,每一列,和对角线各元素之和均相等,3阶的魔方阵如下:

8 1 6

3 5 7

4 9 2

n阶魔方阵的构造方法为:

1> 首先把1放在顶行的正中间,然后把后继数按顺序放置在右上斜的对角线上;

2> 当到达顶行时,下一个数放到底行,好像它在顶行的上面;

3> 当到达最右列时,下一个数放在最左端列,好像它仅靠在右端列的右方;

4> 当到达的位置已经填好数时,或到达右上角的位置时,下一个数就放在刚填写的位置的正下方。



C++函数如下:

/*奇数阶魔方阵问题*/
#include<iostream>
using namespace std;
const int MAX=50;
void main()
{
int matrix[MAX][MAX];
int count;
int row;
int column;
int order;
cout<<"请输入阶数:";
cin>>order;
if(order%2==0)
{
cout<<"阶数必须是一个奇数,请重新输入!"<<endl;
} else
{
row=0;
column=order/2;
for(count=1;count<=order*order;count++)
{
matrix[row][column] = count;
if (count % order == 0)
{
row++;
}
else
{
row = (row == 0) ? order - 1 : row - 1;
column = (column == order-1) ? 0 : column + 1;
}
}

for (row = 0; row < order; row++)
{
for (column = 0; column < order; column++)
{

cout<<"\t"<<matrix[row][column];
}
cout<<endl;
}


}


}

程序运行打印出相应的n阶魔方阵;
Tags: 

延伸阅读

最新评论

发表评论