NOIP 2015
Day1
T1 P2615 [NOIP2015 提高组] 神奇的幻方
解题方法在题面里都告诉了,模拟就完事。
#include<iostream> using namespace std; const int mm=40; int m[mm][mm]; int i,j,n,k; int main() { cin>>n; for(i=0; i<=n+1; i++) { for(j=0; j<=n+1; j++) { if(i>0&&i<=n&&j>0&&j<=n) m[i][j]==0; else m[i][j]==1; } } m[1][n/2+1]=1; i=1; j=n/2+1; k=2; while(k<=n*n) { if(i==1&&j!=n) { m[n][j+1]=k; i=n; j=j+1; k++; continue; } else if(i!=1&&j==n) { m[i-1][1]=k; j=1; i=i-1; k++; continue; } else if(i==1&&j==n) { m[i+1][j]=k; i=i+1; k++; continue; } else if(i!=1&&j!=n) { //cout<<"emm"; if(m[i-1][j+1]==0) { m[i-1][j+1]=k; i-=1; j+=1; k++; continue; } else { m[i+1][j]=k; i+=1; k++; continue; } } /* for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { cout<<m[i][j]; } cout<<endl; } cout<<k<<' '<<endl;*/ } for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { cout<<m[i][j]<<' '; } cout<<endl; } return 0; }