搜尋演算法之廣度優先

2021-09-25 20:43:53 字數 1738 閱讀 9835

/*

// employee info

class employee ;

*/class solution

};

/*

// definition for a node.

class node

node(int _val, vector_children)

};*/

class solution

if(v2.size()>0)

v.push_back(v2);

i = !i;

}return v;

}};

在給定的網格中,每個單元格可以有以下三個值之一:

值 0 代表空單元格;

值 1 代表新鮮橘子;

值 2 代表腐爛的橘子。

每分鐘,任何與腐爛的橘子(在 4 個正方向上)相鄰的新鮮橘子都會腐爛。

返回直到單元格中沒有新鮮橘子為止所必須經過的最小分鐘數。如果不可能,返回 -1

/*

class pair

*/class solution ,,,};

//佇列裡面存放座標

queue> q;

//1.找到所有壞的值

int row = grid.size();

int col = grid[0].size();

for(int i = 0; icurpos=q.front();

q.pop();

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

if(flag)

++mintime;

}//搜尋完,遍歷檢視是否還有新鮮橘子

for(int i = 0; i給定兩個單詞(beginword 和 endword)和乙個字典,找到從 beginword 到 endword 的最短轉換序列的長度。轉換需遵循如下規則:

每次轉換只能改變乙個字母。

轉換過程中的中間單詞必須是字典中的單詞。

說明:如果不存在這樣的轉換序列,返回 0。

所有單詞具有相同的長度。

所有單詞只由小寫字母組成。

字典中不存在重複的單詞。

你可以假設 beginword 和 endword 是非空的,且二者不相同。

示例 1:

輸入:beginword = 「hit」,

endword = 「cog」,

wordlist = [「hot」,「dot」,「dog」,「lot」,「log」,「cog」]

輸出: 5

解釋: 乙個最短轉換序列是 「hit」 -> 「hot」 -> 「dot」 -> 「dog」 -> 「cog」,

返回它的長度 5。

解析:beginword入隊,標記beginword;遍歷當前佇列所有單詞

每次取出隊頭單詞,判斷單子是否和目標相同,如果相同,返回結果;

變換當前單詞:(單詞長度*25)

判斷新的單詞是否在字典中,且沒有使用過:入隊;

轉換長度+1

class solution

int mintrans = 0;

while(!q.empty())

if(dead.find(tmp2) == dead.end() && visit.find(tmp2) == visit.end())}}

mintrans++;

}return -1;

}};

廣度優先搜尋演算法

廣度優先搜尋 bfs 這個是第乙個研究的課題,廣度優先搜尋也叫寬度優先搜尋,英文為breadth first searth,開始看的時候一頭霧水,基本也能懂大致意思,但是還不是真正的理解,今天又仔細看看,大致理解上又更深了一層吧。下面來總結下,自己的一些體會,以及對它的獨到的理解。大的方面來說它是一...

廣度優先搜尋演算法

在深度優先搜尋中,深度越大的結點越先得到擴充套件。如果把它改為深度越小的結點越先得到擴充套件,就是廣度優先搜尋法。廣度優先搜尋演算法的基本思想 1 建立乙個空的狀態佇列ss 2 建立乙個空的狀態庫sb 3 把初始狀態s 0 存入佇列ss中 4 若佇列狀態是目標狀態,則搜尋成功,演算法執行中止。如該狀...

廣度優先搜尋演算法

看了下廣度優先搜尋演算法得定義為從乙個頂點開始,找到最短路勁,歸結為一種連通圖得遍歷策略 如果我們要求v0到v6的一條最短路 假設走乙個節點按一步來算 注意 此處你可以選擇不看這段文字直接看圖3 1 我們明顯看出這條路徑就是v0 v2 v6,而不是v0 v3 v5 v6。先想想你自己剛剛是怎麼找到這...