深度優先搜尋

2021-08-31 21:15:31 字數 1237 閱讀 6422

全排列,假如有編號為1,2,3的3張撲克牌和編號為1,2,3的三個盒子。現在需要將3張撲克牌分別放在3個盒子裡面,並且每個盒子有且只能放一張撲克牌,問題是一共有多少種放法?

如下:

小明拿三張撲克牌走到一號盒子面前,他的心裡想1,2,3放哪乙個呢?如果要生成全排列,那麼都要嘗試,於是他先放1,走到2後放下2,最後在3號盒子中放下3,生成排列1,2,3。可是這並沒有結束,生成一種排列後,小明需要立即返回,現在小明到了3號盒子面前,取回三號盒子的撲克牌,當小明發現手中只有三號撲克牌的時候,沒有其他選擇,於是小明不得不再往後退一步,回到2號盒子面前,收回2號盒子中的撲克牌,現在小明有兩張撲克牌了,分別是2號和3號,按照之前的規定接下來就是往2號盒子中放下3號撲克牌,往3號盒子中放下2號撲克牌。之後的順序就是這樣,最終每個盒子都能夠遍歷完所有的撲克牌。

輸入:5 4

0 0 1 0

0 0 0 0

0 0 1 0

0 1 0 0

0 0 0 1

1 1 4 3

執行結果: 7

樣例說明:輸入第乙個數n表示迷宮的行,m表示迷宮的列,接下來n行m列為迷宮,0表示空地,1表示障礙物,最後一行四個數前兩個表示入口,後兩個表示出口,輸出最短的步長。

# include

# include

using namespace std;

int n,m,end_x,end_y,flag=111111;

int a[101][101],b[101][101];

int guiji[4][2]=,,,};

void find(int x,int y,int step)

}return ;    

}int main()

}int begin_x,begin_y;

cin>>begin_x>>begin_y;

cin>>end_x>>end_y;

find(begin_x,begin_y,0);

cout<

return 0;

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...

廣度優先搜尋,深度優先搜尋

深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...

深度優先搜尋 廣度優先搜尋

深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 package com.neusoft.data.structure 深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 public class dfsbfs 初始化 邊 mmatrix new int vlen vlen for...