「AOJ141~150」の編集履歴(バックアップ)一覧に戻る
#include <stdio.h> void solve(int); char map[101][101]; int dx[4]={0,1,0,-1}; int dy[4]={-1,0,1,0}; int move; int main() { int d,n; scanf("%d",&d); for(int i=0;i<d;i++) { scanf("%d",&n); solve(n); if(i!=d-1){ printf("\n"); } } } void solve(int n) { int x=1,y=n,nx,ny; if(n==1){printf("#\n");return;} int r=0; for(int i=0;i<=n;i++){ for(int j=0;j<=n;j++){ map[i][j]=' '; } } map[x][y]='#'; int count; int count2=0; while(count2<2){ nx=x+dx[r]; ny=y+dy[r]; if(n>=nx && nx>0 && n>=ny && ny>0){ count=0; for(int i=0;i<4;i++){ if(map[nx+dx[i]][ny+dy[i]]=='#') count++; } if(count<2){ map[nx][ny]='#'; x=nx; y=ny; count2=0; }else{ r=(r+1)%4; count2++; } }else{ r=(r+1)%4; count2++; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ printf("%c",map[j][i]); } printf("\n"); }