模拟
/**//*
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
小阮 阅读(389)
评论(0) 编辑 收藏 引用 所属分类:
USACO