C++ 幻方
题目描述
n阶奇数幻方
行列数相等的矩阵称为方阵。把正整数1-n^2(n为奇数)排成一个n×n方阵,使得方阵中的每一行每一列以及两条对角线上的数之和都相等,这样的方阵称为n阶奇数幻方。
编程输入n,输出n阶奇数幻方。
输入格式
一个正整数n,n为奇数。
输出格式
n行,每行n个数字,数字之间用空格隔开,意义如【题目描述】。
样例数据
input5output17 24 1 8 1523 5 7 14 16 4 6 13 20 2210 12 19 21 311 18 25 2 9
数据规模与约定
1≤n≤19
CODE
#include#include/* #include */using namespace std;int a[45][45];int main(){int n,k,i,j,x,y;cin>>n;x=1;y=n/2+1;a[1][n/2+1]=1;for(k=2;k<=n*n;k++){if(x==1 && y!=n){a[n][y+1]=k;x=n;y=y+1;}else{if(y==n && x!=1){a[x-1][1]=k;x=x-1;y=1;}else{if(x==1 && y==n){a[x+1][y]=k;x=x+1;}else{if(x!=1 && y!=n){if(a[x-1][y+1]==0){a[x-1][y+1]=k;x=x-1;y=y+1;}else{a[x+1][y]=k;x=x+1;}}}}}}for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}return 0;}