Go to diff to previous submission
#include <cstdio> int pole[102][102]; int velX,velY,startX,startY,cilX,cilY; void rekurze(int X,int Y,int N) { //~ printf ("---- %d %d\n",X,Y); if (X<1||Y<1||X>velX||Y>velX) return; if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N; else return; //~ if (cilX>X) //~ { rekurze(X+2,Y-1,N+1); rekurze(X+2,Y+1,N+1); //~ } //~ else //~ { rekurze(X-2,Y-1,N+1); rekurze(X-2,Y+1,N+1); //~ } //~ if (cilY>Y) //~ { rekurze(X-1,Y+2,N+1); rekurze(X+1,Y+2,N+1); //~ } //~ else //~ { rekurze(X-1,Y-2,N+1); rekurze(X+1,Y-2,N+1); //~ } } int main() { //~ int velX,velY,startX,startY,cilX,cilY; while (scanf("%d%d%d%d%d%d",&velX,&velY,&startX,&startY,&cilX,&cilY)==6) { for (int i=1;i<=velX;i++) for (int j=1;j<=velY;j++) pole[i][j]=-1; rekurze(startX,startY,0); if (pole[cilX][cilY]==-1) printf("impossible\n"); else printf("%d\n",pole[cilX][cilY]); } }
--- c4.s1066.cteam039.grasshop.cpp.0.grasshop.cpp +++ c4.s1100.cteam039.grasshop.cpp.0.grasshop.cpp @@ -12,24 +12,24 @@ if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N; else return; - if (cilX>X) - { + //~ if (cilX>X) + //~ { rekurze(X+2,Y-1,N+1); rekurze(X+2,Y+1,N+1); - } - else - { + //~ } + //~ else + //~ { rekurze(X-2,Y-1,N+1); rekurze(X-2,Y+1,N+1); - } - if (cilY>Y) - { + //~ } + //~ if (cilY>Y) + //~ { rekurze(X-1,Y+2,N+1); rekurze(X+1,Y+2,N+1); - } - else - { + //~ } + //~ else + //~ { rekurze(X-1,Y-2,N+1); rekurze(X+1,Y-2,N+1); - } + //~ } }