模拟

/**//*
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>N || ty>N || 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;
}
posted on 2011-03-11 23:21
小阮 阅读(399)
评论(0) 编辑 收藏 引用 所属分类:
USACO