魔方阵的奇术解法
好久没有写算法了,由于一些原因,现在我又回来了,我又开始学算法写算法了。
前几天上机考试做了一道奇数魔方阵的编程题,现在整理一下贴出来。
思想到处都是,据说谭浩强老师的教材上有介绍,就当练手了。
//---------------------------------------------------------------------------
#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;
}
//---------------------------------------------------------------------------
浙公网安备 33010602011771号