那25个数呢 程序
道理不是一样的?只要是基数就可以,那个叫做“Magic Square”。
算法是这样的,从1开始,左斜上2,有数了就往下。……继续……
呵呵,不知道有没有记错哦!
从网上抄下来给楼主的~~~
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{
cout<<"Enter the size of the magic square :\n";
int n;
cin>>n;
n=n/2*2+1;
cout<<"the size is "<<n<<endl;
int members=n*n;
int *foo=new int[members]; //设置动态一维叔祖
int row=0,col=(n)/2;
for(int i=0;i!=members;i++)
{
foo[row*n+col]=i+1;
row--;
col++;
if(i%n==n-1)
{
row+=2;
col--;
}
if(row<0)row+=n;
if(col==n)col=0;
}
for(i=0;i!=members;i++)
{
cout<<setw(5)<<foo[i];
if(i%n==n-1)cout<<endl;
}
delete []foo;
}
奇数阶魔方阵元素的排列有以下规律:
(1)自然数1总是在方阵第一行当中一列上
(2)后续的自然数在当前数的右上方,即行数减1列数加1的位置。若当前数在第一
行但不在最后列,则后续数在最后一行的下一列上;若当前数在最后一列,则后续数
在上一行的第一列
若按照规律(2)得出的位置已被占用,则下一个自然数放在当前数的下一行同列上
如5阶
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
偶数但不是4的倍数和4的倍数分别又将如何?看看吧!
n=6:
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
n=10:
92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59
n=4:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
n=8:
64 2 3 61 60 6 7 57
9 55 54 12 13 51 50 16
17 47 46 20 21 43 42 24
40 26 27 37 36 30 31 33
32 34 35 29 28 38 39 25
41 23 22 44 45 19 18 48
49 15 14 52 53 11 10 56
8 58 59 5 4 62 63 1
[此贴子已经被作者于2007-5-14 20:18:44编辑过]