BFS(保全のグローバルな状態のBFSトラバーサル、練習の華容レプリカ) - 08 - DFS--ブルーブリッジカップカップカエルジャンプ

 

タイトル説明

白と黒:惑星Xの人気ペットのカエルは、2色があります。 
惑星Xの住民は、カップに一列にそれらを置くのが好きなので、あなたは周りのジャンプそれらを見ることができます。 
カップの行の下に、左の一つは空である、カップの右側に、それぞれが内部カエルを有します。 
* WWWBBB 
Wは白文字のカエルを表しは、Bは黒カエルを表し、*空のカップを示しています。 
惑星Xは、彼らが唯一の3つのアクションのいずれかを実行し、いくつかのカエル習慣である 
隣接する空のカップ1.ジャンプを。 
空のカップにジャンプするカエル(何色)を横切って他の2。 
空のカップにジャンプするには、2匹の他のカエル(何色)を横切る3。 
限り1つのステップとして、マップ上の状況について、あなたは状況にジャンプすることができます:WWW * BBBの 
この問題のタスクは初期の状況を知られている、別の目標状況にジャンプするために、少なくともいくつかの手順をお願いします。 

エントリー

各試験の試験データ入力の複数のセット、: 
入力行2、列2は、初期状況と目標状況を表しています。入力文字列の長さが15を超えません 

輸出

テストデータの各セットについて:出力要求少なくとも蛙飛びのステップ数を表す整数です。 

サンプル入力  のコピー

* WWBB 
WWBB * 
WWW * BBB 
BBB WWW *

サンプル出力のコピー

2 
10
1の#include <ビット/ STDC ++ H>
 2  の#define INF 0x3f3f3f3f
 3のtypedef 長い LL。
4  使用して 名前空間STDを、
5  A、B。
6マップ< 文字列int型 > sigmap。
7  クラスノード{
 8  公共9      ストリングS。
10      INT ステップ;
11      INT ID。
12      ノード( S、整数、ステップ、整数のID){
13           - > S = S。
14           - >ステップ= ステップ。
15           - > ID = ID。
16      }
 17  }。
18の ボイドBFS()
 19  {
 20      キュー<ノード> myque。
21      であれば(== B)
 22          COUT << 0 << ENDL。
23      {
 24          ノードノド=ノード(0、a.find(' * ' ));
25          myque.push(NOD)。
26         sigmap [A] = 1 27          ながら(!myque.empty()){
 28              ノド= myque.front()。
29              myque.pop()。
30              のためにINT I = Nod.id- 3 ; I <= Nod.id + 3 ; I ++ ){
 31                  であれば(私は> = 0 && I <Nod.s.length()&& I =!Nod.id){
 32                      ストリング S = Nod.s。
33                      スワップ(S [i]は、S [Nod.id])。
34                      であれば(sigmap [S] == 1 35                          続けます36                     もし(S == B){
 37                          COUT << Nod.step + 1 << ENDL。
38                          リターン;
39                      }
 40                      sigmap [S] = 1 41                      今やノード=ノード(S、Nod.step + 1 、I)。
42                      myque.push(今)。
43                  }
 44              }
 45          }
 46      }
 47  }
 48  のint main()の
 49  {
 50      ながら(CIN >>A){
 51          CIN >> B。
52の         BFS()。
53      }
 54      リターン 0 55 }

 

おすすめ

転載: www.cnblogs.com/qinqin-me/p/12259948.html