#include<iostream>
using namespace std;
int cube[21][21];
int main(){
int n=0;cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cube[i][j]=0;//清空正方形图表
int x=0,y=n/2;
cube[x][y]=1;//第1步,第一行正中填写1
for(int d=2;d<=n*n;d++){
int nx=(x+n-1)%n;
int ny=(y+1)%n;//第2步,向右上移动一格
if(cube[nx][ny]!=0){
nx=(x+1)%n;//第3步,如果第2步失败,向下移动一格
ny=y;
}
cube[nx][ny]=d;//填写下一个数字
x=nx;y=ny;
}
for(int i=0;i<n;i++){//输出幻方
cout<<cube[i][0];
for(int j=1;j<n;j++) cout<<" "<<cube[i][j];cout<<endl;
}
return 0;
}/*例:
3
输出:
8 1 6
3 5 7
4 9 2
*/
填幻方(C++)
最新推荐文章于 2025-03-17 20:25:11 发布