魔方阵的奇术解法

     好久没有写算法了,由于一些原因,现在我又回来了,我又开始学算法写算法了。

    前几天上机考试做了一道奇数魔方阵的编程题,现在整理一下贴出来。

    思想到处都是,据说谭浩强老师的教材上有介绍,就当练手了。

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <iomanip>
#pragma hdrstop
#define MAXSIZE 30
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int ans[MAXSIZE][MAXSIZE];

void solve(int n)
{
        int mid = n/2;
        int i = 0 ,j = mid ;
        int num = n * n ;
        for ( int k = 1 ; k <= num ; k++ )
        {
        ans[i][j] = k ;
        if( k % n == 0 )
        {
        i += 1 ;
        continue;
        }
        i--;
        j++;
        if(i < 0 ) i = n-1 ;
        if(j > n-1 ) j = 0 ;
        }
}

void output(int n)
{
        for (int i = 0 ;i < n ; i++)
        {
        for(int j = 0 ;j < n ; j++)
        cout<<setw(3) << ans[i][j]<<"  " ;
        cout << endl;
        }
}

int main(int argc, char* argv[])
{
        memset(ans,-1,sizeof(ans));
        int n;
        cin >> n ;
        solve( n );
        output( n );
        system("PAUSE");
        return 0;
}
//---------------------------------------------------------------------------

posted on 2011-05-06 13:48  _Clarence  阅读(226)  评论(0编辑  收藏  举报

导航