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