#include <stdio.h> int squ[100][100]={0}; int n; void pr(void); int re(int x, int y, int c, int a); int main(void) { int b=0; scanf("%d", &n); pr(); for(int i=1;i<=1;i++){ b=re(i, n, 1, 1); printf("\n re b : %d\n", b); } pr(); return 0; } void pr(void) { int i, j; for(i=0; i<=n*2; i++) { for(j=0; j<=n*2; j++) printf("%2d ", squ[i][j]); printf("\n"); } printf("\n\n"); } int re(int x, int y, int c, int a) { int kk=1; int res=0; printf("x: %d y: %d c: %d a: %d squ: %d \n", x, y, c, a, squ[x][y]); if (a==5) return c; if(x>0 && y>0 && x<n*2 && y<n*2 && squ[x][y]==0) { if(a==1) { squ[x][y]=c; if(squ[x+1][y]!=0) { if(squ[x][y+1]==0) { pr(); kk=re(x+1, y+1, c+1, 2); } } else { pr(); kk=re(x+1, y-1, c+1, a); } } if(a==2) { squ[x][y]=c; if(squ[x][y+1]!=0) { pr(); kk=re(x-1, y+1, c+1, 3); } else { pr(); kk=re(x+1, y+1, c+1, a); } } if(a==3) { squ[x][y]=c; if(squ[x-1][y]!=0) { pr(); kk=re(x-1, y-1, c+1, 4); } else { pr(); kk=re(x-1, y+1, c+1, a); } } if(a==4) { squ[x][y]=c; pr(); kk=re(x-1, y-1, c+1, a); } //squ[x][y]=kk-c; //squ[x][y]=-c; res=kk; printf("\nkres : %d c : %d\n",res, c); squ[x][y]=kk-c; //squ[x][y]=squ[x][y]-c; } else { if(squ[x][y]!=0 && squ[x+1][y]!=0 && squ[x][y+1]!=0 && squ[x-1][y]!=0 && squ[x][y-1]!=0) return 0; else if(x<=0) kk=re(x+2, y+1, c, (a%4)+1); else if(y<=0) kk=re(x, y+2, c, (a%4)+1); else if(x>=n*2) kk=re(x-2, y, c, (a%4)+1); else if(y>=n*2) kk=re(x, y-2, c, (a%4)+1); else if(squ[x][y]!=0 && a==4) kk=re(x+1, y, c, 5); } return kk; }