#include <stdio.h> int squ[10000][10000]={0}; int n; int re(int x, int y, int c, int a); void pr(void); int main(void) { scanf("%d", &n); re(1, 1, 1, 1); pr(); return 0; } void pr(void) { int i, j; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) printf("%2d ", squ[i][j]); printf("\n"); } } int re(int x, int y, int c, int a) { if(c<=n*n && x>=1 && x<=n && y>=1 && y<=n && squ[x][y]==0) { if(a==1) { squ[x][y]=c; re(x, y+1, c+1, a); } if(a==2) { squ[x][y]=c; re(x+1, y, c+1, a); } if(a==3) { squ[x][y]=c; re(x, y-1, c+1, a); } if(a==4) { squ[x][y]=c; re(x-1, y, c+1, a); } } else { if(c>n*n) return 0; else if(x<1) re(x+1, y+1, c, (a%4)+1); else if(x>n) re(x-1, y-1, c, (a%4)+1); else if(y<1) re(x-1, y+1, c, (a%4)+1); else if(y>n) re(x+1, y-1, c, (a%4)+1); else if(squ[x][y]!=0) { if(a==1) re(x+1, y-1, c, (a%4)+1); else if(a==2) re(x-1, y-1, c, (a%4)+1); else if(a==3) re(x-1, y+1, c, (a%4)+1); else if(a==4) re(x+1, y+1, c, (a%4)+1); } } }
2017.11.18 11:04
정올 달팽이 사각형(재귀)
조회 수 203 추천 수 0 댓글 0