連通塊模板用法:
輸入資料:0/1矩陣,若標準輸入不是0/1矩陣,請轉換。
轉換0/1矩陣,你可能需要形如這樣的**:
char ch
switch
(ch)
case
'空地'
:}
適合問題:連通塊
廣度優先搜尋版:
#include
using
namespace std;
struct node
node
(int x1,
int y1):x
(x1),y
(y1)};
int n,m;
int u[4]
[2]=
,,,}
;int head=1;
int tail=1;
int s[
105]
[105];
int sum=0;
void
bfs(
int x,
int y)}}
}int
main()
}for
(int i=
0;i} cout
}
深度優先搜尋版:
#include
#include
#include
using
namespace std;
int n, m;
bool vis[
1005][
1005];
int maze[
1005][
1005];
int ans, cnt;
int dir[4]
[2]=
,,,}
;boolin(
int x,
int y)
void
dfs(
int x,
int y)}}
intmain()
}for
(int i =
0; i < n; i++)}
} cout << ans << endl;
return0;
}
搜尋(深搜 廣搜)
我記得在遙遠的2017年,我會敲的搜尋也只有暴力列舉了。那個時候的我深搜剛會一丟丟,所以也只配切切水題,然而經常死迴圈re那是肯定的。如今的我因為在多次比賽中都死於搜尋,那就必須得認真磕一下了。其實是這樣的 我眼裡認為的暴力就真的只是暴力,暴力無非就兩種 列舉打表和模擬。然而在這麼多次比賽後,我總能...
廣搜和深搜
一般來說,廣搜常用於找單一的最短路線,或者是規模小的路徑搜尋,它的特點是 搜到就是最優解 而深搜用於找多個解或者是 步數 已知 好比3步就必需達到前提 的標題,它的空間效率高,然則找到的不必定是最優解,必需記實並完成全數搜尋,故一般情況下,深搜需要很是高效的剪枝 優化 像搜尋最短路徑這些的很顯著若是...
深搜和廣搜
深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次 採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。基本思路 深度優先遍歷圖的方法是,從圖中某頂點v出發 1 訪問頂點v 2 依...