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