藍橋杯 跳蚱蜢 BFS

2021-10-24 18:48:41 字數 1122 閱讀 3231

1.題目大意

9個盤子擺成乙個環,盤裡裝著蚱蜢,左四個,右四個,對稱軸上有乙個空盤,蚱蜢只能跳到相鄰的或隔著乙個盤子的空盤;開始時順時針編號(左四個1234,右四個5678)問最少經過多少次跳躍能讓盤子編號變為逆時針順序且開始時的空盤位置不變(左四個8765,右四個4321)

2.解決方法

把當前盤子的狀態以字串形式記錄,空盤編號設為0,開始時的狀態為123456780,結束狀態為876543210。0可以向左或向右移動1,2個單位,從起點bfs直到找到終點;

但是為了複習雙向廣搜,本題用牛刀殺雞了,,,,

3.**

#include

#include

#include

#include

#include

#include

using

namespace std;

mapint> m1;

mapint> m2;

int cnt;

string start=

"123456780"

;string ed=

"876543210"

;bool

extend

(queue

&q,mapint>

&m1,mapint>

&m2)

for(

int i=

0;i<

4;i++

)else

if(i==1)

else

if(i==2)

else

swap

(mid[

(loc+2+

9)%9

],mid[loc]);

if(m2.

count

(mid))if

(!m1.

count

(mid)

) mid=t;

}return

false;}

void

bfs()}

intmain

(void

)

藍橋杯 跳蚱蜢 bfs

題意 有9只盤子,排成1個圓圈。其中8只盤子內裝著8只蚱蜢,有乙個是空盤。我們把這些蚱蜢順時針編號為 1 8 每只蚱蜢都可以跳到相鄰的空盤中,也可以再用點力,越過乙個相鄰的蚱蜢跳到空盤中。請你計算一下,如果要使得蚱蜢們的隊形改為按照逆時針排列,並且保持空盤的位置不變 也就是1 8換位,2 7換位,至...

跳蚱蜢 藍橋杯

藍橋杯2017 c c a組第2題 題目 有9只盤子,排成1個圓圈。其中8只盤子內裝著8只蚱蜢,有乙個是空盤。我們把這些蚱蜢順時針編號為 1 8 每只蚱蜢都可以跳到相鄰的空盤中,也可以再用點力,越過乙個相鄰的蚱蜢跳到空盤中。請你計算一下,如果要使得蚱蜢們的隊形改為按照逆時針排列,並且保持空盤的位置不...

藍橋杯 跳蚱蜢 Python

題目 如圖 p1.png 所示 有9只盤子,排成1個圓圈。其中8只盤子內裝著8只蚱蜢,有乙個是空盤。我們把這些蚱蜢順時針編號為 1 8。每只蚱蜢都可以跳到相鄰的空盤中,也可以再用點力,越過乙個相鄰的蚱蜢跳到空盤中。請你計算一下,如果要使得蚱蜢們的隊形改為按照逆時針排列,並且保持空盤的位置不變 也就是...