随笔-141  评论-9  文章-3  trackbacks-0
模拟

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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理