有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 遍歷標...