3 10 跳蚱蜢 廣度優先搜尋

2021-08-16 17:59:25 字數 911 閱讀 6157

有9只盤子,排成1個圓圈。

其中8只盤子內裝著8只蚱蜢,有乙個是空盤。

我們把這些蚱蜢順時針編號為 1~8

每只蚱蜢都可以跳到相鄰的空盤中,

也可以再用點力,越過乙個相鄰的蚱蜢跳到空盤中。

請你計算一下,如果要使得蚱蜢們的隊形改為按照逆時針排列,

並且保持空盤的位置不變(也就是1-8換位,2-7換位,…),至少要經過多少次跳躍?

這道題廣度優先搜尋和深度優先搜尋均可實現,但是這道題需要求出最短步數,所以顯然廣度優先搜尋能更快的達到目標(因為第乙個結果即為所求答案)

並且深度搜尋容易進入死迴圈!!

#include

#include

#include

#include

using

namespace

std;

const

string st="012345678";

const

string ed="087654321";

queue

string,int>,int> > que;//從左到右依次為:當前各位置的螞蚱編號、空位位置、當前步數

const

int d[5]=;

map parent;//記錄當前狀態的前乙個狀態

int main()

que.pop();

for(int i=0;i<4;i++)}}

cout

/列印路徑

for (string now = ed; now != ""; now = parent[now])

}

演算法 跳石板問題(廣度優先搜尋)

小易來到了一條石板路前,每塊石板上從1挨著編號為 1 2 3.這條石板路要根據特殊的規則才能前進 對於小易當前所在的編號為k的石板,小易單次只能往前跳k的乙個約數 不含1和k 步,即跳到k x x為k的乙個 非1和本身的約數 的位置。小易當前處在編號為n的石板,他想跳到編 號恰好為m的石板去,小易想...

搜尋 廣度優先搜尋

廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...

廣度優先搜尋

include include include include using namespace std struct node 圖頂點結構定義 typedef struct node graph 圖形的結構新型態 struct node head 9 圖形頂點陣列 int visited 9 遍歷標...