ghost79

导航

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

留言簿(0)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

N阶奇数幻方题解

幻方指在N*N的方阵中,将1~N*N个数放入N*N个格子,使横、竖、斜的和都相等。奇数幻方指N为奇数。如3*3幻方其中的一个解是:
8 1 6
3 5 7
4 9 2

5*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

这种填法总的规则是“非右上则下”。

附源代码如下:

 

#include <iostream>

#define CELL( y, x ) t[ ( y ) * n + ( x ) ]

using namespace std;
   
int main( void )   
{
    
int n;
    cin 
>> n;

    unsigned 
int *= new unsigned int[ n * n ];

    
int i = 0, j = ( n - 1 ) / 2;

    
forint k = 1; k <= n * n; k++ )
    
{
        CELL( i, j ) 
= k;
        
if!( k % n ) )
            i
++;
        
else
        
{
            i
--;
            j
++;
        }


        
if( i == -1 ) i = n - 1;
        
if( j == n ) j = 0;
    }


    
forint i = 0; i < n; i++ )
    
{
        
forint j = 0; j < n; j++ ) printf( "%-4d", CELL( i, j ) );
        printf( 
"\n" );
    }


    delete []t;

    system(
"PAUSE");
    
return 0;
}

posted on 2009-04-09 13:14 C家家 阅读(85) 评论(0)  编辑 收藏

评论

标题  
姓名  
主页
内容   
请输入验证码:
*
  登录  使用高级评论  Top 订阅回复  取消订阅
[使用Ctrl+Enter键可以直接提交]