本帖最后由 ysunday 于 2013-11-13 21:56 编辑
这有个网址
http://www.cnblogs.com/faib/archive/2007/02/28/659789.html
奇阶魔方阵 N=2*M+1(M=1,2,3,……)
布阵规律为:
a、把1放在N*N方阵中的第一行中间一列,即放在位置为(1,(N+1)/2);
b、后一个数存放的行数比前一个数存放的行数减1,若这个行数为0,则取行数为N;
c、后一个数存放的列数比前一个数存放的列数加1,若这个列数为N+1,则取列数为1;
d、如果前一个数是N的倍数,则后一个数存放的列数不变,而行数加1。
我只是把代码搬过来 没细研究, 稍微改了改代码,你慢慢看肯定能懂- class magic
- {
-
- public static void main(string[] args)
- {
- //奇阶魔方阵
- int n = 3;
- int[][] magicd = new int[n][n];
- int x = 0, y = (n + 1) / 2 - 1;
- for(int i = 1; i <= n * n; i++){
- magicd[x][y] = i;
- if(i % n == 0){
- x++;
- }
- else{
- x--;
- y++;
- }
- if(x < 0){
- x = n - 1;
- }else if(x > n - 1){
- x = 0;
- }
- if(y < 0){
- y = n - 1;
- }else if(y > n - 1){
- y = 0;
- }
- }
- for(int i = 0; i < n; i++){
- for(int j = 0; j < n; j++){
- System.out.println(magicd[i][j] + "\t");
- }
- System.out.println();
- }
- }
复制代码 |