中国のチェス(メーターニンニクオフ)

 

 

 

 

 

  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 }

 

おすすめ

転載: www.cnblogs.com/caxi/p/12517810.html