Uva_439
 
 
 
 
 
 
A relatively simple search question.
 
 
 # Include  <  Stdio. h  >  
# Include  < String  . H  >  
  Int  A [  10  ] [  10  ], QX [  100  ], QY [  100  ], Vis [  10  ] [  10  ];
 Int  DX []  =  {  -  2  ,  -  2  ,  -  1  ,  1  ,  2  ,  2  , 1  ,  -  1  };
  Int  Dy []  =  {  -  1  ,  1  ,  2  ,  2  , 1  ,  -  1  ,  -  2  ,  -  2  };
  Char  B1 [  5  ], B2 [  5  ];
  Int Main ()
{
  Int  I, J, K, UX, Uy, VX, Vy, front, rear, X, Y, newx, newy;
  While  (Scanf (  "  % S % s  "  , B1, b2)  ! =  EOF)
{
UX  =  B1 [  1  ]  -  ' 1  '  ;
Uy  =  B1 [  0  ]  -  '  A  '  ;
VX  =  B2 [  1  ]  -  ' 1  '  ;
Vy  =  B2 [  0  ]  -  '  A  '  ;
Front  =  Rear  =  0  ;
Memset (VIS,  - 1  ,  Sizeof  (VIS ));
Vis [UX] [Uy]  =  0  ;
QX [rear]  =  UX;
QY [rear]  =  Uy;
Rear  ++  ;
  While  (Front  < Rear)
{
X  =  QX [Front];
Y  =  QY [Front];
  If  (X  =  VX  &&  Y  =  Vy)
  Break  ;
Front  ++ ;
  For  (I  =  0  ; I  <  8  ; I  ++  )
{
Newx  =  X  +  DX [I];
Newy  =  Y +  Dy [I];
  If  (Vis [newx] [newy]  <  0  &&  Newx  > =  0  &&  Newx  <  8  &&  Newy  > = 0  &&  Newy  <  8  )
{
Vis [newx] [newy]  =  Vis [x] [Y]  +  1  ;
QX [rear]  =  Newx;
QY [rear]  =  Newy;
Rear ++  ;
}
}
}
Printf (  "  To get from % s to % s takes % d knight moves. \ n  "  , B1, B2, vis [VX] [Vy]);
}
  Return     0  ;
}