NOIP2015神奇的幻方
5分钟模拟
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int g[300][300]; 5 int main(){ 6 int k; 7 cin>>k; 8 g[1][k/2+1]=1; 9 int x=1,y=k/2+1; 10 for(int i=1;i<k*k;i++){ 11 if(x==1&&y!=k)g[k][y+1]=i+1,x=k,y++; 12 else if(y==k&&x!=1)g[x-1][1]=i+1,x--,y=1; 13 else if(x==1&&y==k)g[x+1][y]=i+1,x++; 14 else if(x!=1&&y!=k)if(!g[x-1][y+1])g[x-1][y+1]=i+1,x--,y++;else g[x+1][y]=i+1,x++; 15 } 16 for(int i=1;i<=k;i++){ 17 for(int j=1;j<=k;j++){ 18 cout<<g[i][j]<<" "; 19 } cout<<endl; 20 } 21 }