1の#include <iostreamの> 2の#include < ストリング > 3の#include <キュー> 4 使って 名前空間STDを、 5 チャー A [ 11 ] [ 10 ]。 6 INTの状態[ 11 ] [ 10 ]。 7 構造体ノード 8 { 9 int型のX; 10 INT Y。 11 チャーS。 12 ノード(int型のx、int型 Y、チャーS) 13 { 14 本 - > X = X。 15 本 - > Y = Y。 16 本 - > S = S。 17 } 18 }。 19 BOOL(次のint型のx、int型のY) 20 { 21 場合(X> = 1つの && Y> = 1 && X <= 10 && Y <= 9 ) 22 { 23 かの状態[X]([Y] == 0 &&(A [X] [Y] == ' ' || [X] [Y] == ' T ')) 24 リターン 真。 25 他に 26 のリターン はfalse ; 27 } 28 、他の 29 のリターン はfalse ; 30 } 31 のint main()の 32 { 33 のintフラグ= 0 。 34 キュー<ノード> Q。 35 のための(INTは私= 1 ; I <= 10 ; I ++ ) 36 のための(INT J = 1 ; J <= 9; J ++ ) 37 { 38 CIN >> [I] [J]。 39 であれば([I] [J] == ' S ' ) 40 q.push(ノード(I、J、' S ' )); 41 } 42 ながら(!q.empty()) 43 { 44 ノード今= q.front()。 45 であれば(now.s == ' T ' ) 46 { 47 COUT << " はい" 。 48 フラグ= 1 。 49 ブレーク; 50 } 51 のための(INTは私= 0 ; I < 8 ; I ++ ) 52 { 53 であれば(次(now.x- 1、now.y- 2 )) 54 { 55 ノードnext_step(now.x- 1今、。 Y- 2、[now.x- 1 ] [now.y- 2 ])。 56 q.push(next_step)。 57 状態[now.x- 1] [now.y- 2 ] = 1 ; 58 } 59 であれば(次の(now.x- 2、now.y- 1 )) 60 { 61 ノードnext_step(now.x- 2、now.y- 1、[now.x- 2 ] [now.y - 1 ])。 62 q.push(next_step)。 63 状態[now.x- 2 ] [now.y- 1 ] = 1 。 64 } 65 であれば(次の(now.x- 2 now.y、+ 1)) 66 { 67 ノードnext_step(now.x- 2 now.y、+ 1、[now.x- 2 ] [now.y + 1 ])。 68 q.push(next_step)。 69 [now.x-状態2 ] [now.y + 1 ] = 1 。 70 } 71 であれば(次(now.x- 1、now.y + 2 )) 72 { 73 ノードnext_step(now.x- 1 now.y、+ 2、[now.x- 1 ] [now.y +2 ])。 74 q.push(next_step)。 75 [now.x-状態1 ] [now.y + 2 ] = 1 ; 76 } 77 であれば(次(now.x + 1、now.y + 2 )) 78 { 79 ノードnext_step(now.x + 1 now.y、+ 2、[now.x + 1 ] [now.y + 2 ])。 80 q.push(next_step)。 81 状態[now.x + 1 ] [now.y + 2 ] = 1; 82 } 83 であれば(次(now.x + 2、now.y + 1 )) 84 { 85 ノードnext_step(now.x + 2 now.y、+ 1、[now.x + 2 ] [now.y + 1 ])。 86 q.push(next_step)。 87 状態[now.x + 2 ] [now.y + 1 ] = 1 。 88 } 89 であれば(次(now.x + 2、now.y- 1 )) 90 { 91 ノードnext_step(now.x + 2、now.y- 1、[now.x + 2 ] [now.y- 1 ])。 92 q.push(next_step)。 93 状態[now.x + 2 ] [now.y- 1 ] = 1 。 94 } 95 であれば(次(now.x + 1、now.y- 2 )) 96 { 97 ノードnext_step(now.x + 1 now.y-、2、[now.x + 1 ] [now.y- 2 ] ); 98 q.push(next_step)。 99 状態[now.x + 1 ] [now.y- 2 ] = 1 ; 100 } 101 } 102 q.pop()。 103 } 104 であれば(フラグ== 0 ) 105 { 106 COUT << " いいえ" 。 107 } 108 戻り 0 ; 109 }