USACO_MAR11 Spiral (螺旋矩阵, 模拟)

USACO_MAR11 Spiral (螺旋矩阵, 模拟)
模拟

/**/ /*
ID: lorelei
TASK: spiral
LANG: C++
*/


#include 
< fstream >

using   namespace  std;

const   int  MAXN   =   800 ;
const   int  dx[] =   {0,1,0,-1} ;
const   int  dy[] =   {1,0,-1,0} ;

ifstream fin(
" spiral.in " );
ofstream fout(
" spiral.out " );

int  m[MAXN][MAXN];
int  N,M;

int  main() {
    
int i, j, x=1, y=1, dir=0;
    fin
>>N;
    M 
= N*N;
    
    
for(i=1; i<=M; ++i){
        m[x][y]
=i;

        
int tx = x + dx[dir];
        
int ty = y + dy[dir];

        
if(m[tx][ty] || tx>|| ty>|| tx<1 || ty<1){
            dir
++;
            
if(dir==4)dir=0;
        }


        x 
+= dx[dir];
        y 
+= dy[dir];
    }


    
for(i=1; i<=N; ++i){
        
for(j=1; j<N; ++j)
            fout
<<m[i][j]<<" ";
        fout
<<m[i][N]<<endl;
    }

    
return 0;
}

你可能感兴趣的:(USACO_MAR11 Spiral (螺旋矩阵, 模拟))