> 文档中心 > C++ 幻方

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;}

朋友们,点赞是我更新的最大动力,感谢你们近两个月对我的支持,明天再见,拜拜!