求n階幻方的一種演算法實現C/C++
阿新 • • 發佈:2019-01-22
求n階幻方方的一種實現。這裡的n只能是一個奇數。它是la Loubere 在17世界發現的構造方法。
#include<stdio.h> int a[10][10]; void magic_circle(int n) { int k =2; int i=0,j=n/2; a[i][j]=1; printf("%d\n",n); for(int t =0;t<n*n;t++){ if(i==0&&(j+1)<n){ a[n-1][j+1]=k++; i=n-1; j++; continue; } if(j==n-1&&(i-1)>=0){ a[i-1][0]=k++; i--; j=0; continue; } if(a[i-1][j+1]>0||(i==0&&j==n-1)){ a[i+1][j]=k++; i++; continue; } a[i-1][j+1]=k++; i--;j++; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++)printf("%d\t",a[i][j]); printf("\n"); } //return a; } int main(){ int n=9; //int a[n][n]; magic_circle(n); /*for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%d\t",a[i][j]); printf("\n"); }*/ getchar(); return 0; }
示例結果: