DFS 入門系列

2021-10-05 00:25:25 字數 2089 閱讀 6023

problem_id=1694)bfs入門成功後,繼續入dfs的坑,那麼先把bfs做過的題用dfs寫一遍吧。。。

馬的遍歷

話說這種題還是bfs好(畢竟快)。。。但為了配合dfs並且不被tle就人工加乙個閾值限制一下吧。。(受題解大佬提醒 閾值在200左右)上**!

#include

#define check(y,x) (x>=1&&x<=wx&&y>=1&&y<=wy)

using

namespace std;

int map1[

405]

[405];

int wx,wy;

struct node

;int dir[8]

[2]=

,,,,

,,,}

;//標記馬行走方位。

void

dfs(

int y,

int x,

int num)}}

intmain()

oj 最大黑色區域

#include

#define check(y,x) (x>=0&&y>=0&&yusing

namespace std;

bool _map[

105]

[105];

int dx,dy,num;

int dir[4]

[2]=

,,,}

;int

dfs(

int y,

int x)

}return num;

}int

main()

cout<}return0;

}

好久沒更新了。。今天繼續更一道dfs

需要用到回溯技巧

洛谷 1605 迷宮

#include

#define check(y,x) (x>=1&&x<=b&&y>=1&&y<=a)

//定義好邊界,進行判斷。

using

namespace std;

int dir[4]

[2]=

,,,}

;int dx,dy,num,px,py,a,b;

bool map1[23]

[23];

void

dfs(

int py,

int px)

for(

int i=

0;i<

4;i++)}

return;}

intmain()

num=

0;map1[py]

[px]=1

;dfs

(py,px)

;printf

("%d\n"

,num)

;return0;

}

好久沒寫dfs了,來更一篇dfs+高精加+斐波拉契數列

洛谷 1225 數樓梯

#include

//dfs+高精加

using

namespace std;

int n,len=

1,f[

5003][

5003];

//f[k][i]--第k階台階所對應的走法數

voidhp(

int k)

//高精度加法,k來存階數

}int

main()

剛剛寫了個stl解決排列的方法,現在再更一道用dfs寫組合的問題。

洛谷 1157

#include

using

namespace std;

bool vis[25]

;int m,n;

int a[25]

;void

dfs(

int x,

int num)

for(

int i=x;i1;i++)}

}int

main()

}

dfs入門 紅與黑

時間限制 1 sec 記憶體限制 32 mb 提交 10 解決 8 提交 狀態 討論版 小明站在乙個矩形房間裡,這個房間的地面鋪滿了地磚,每塊地磚的顏色或是紅色或是黑色。小明一開始站在一塊黑色地磚上,並且小明從一塊地磚可以向上下左右四個方向移動到其他的地磚上,但是他不能移動到紅色地磚上,只能移動到黑...

DFS入門 例題

以下是全網收集整理的和自己寫的部分,絕對保證dfs輕鬆入門。核心 關於dfs引數問題,什麼在變化,就把什麼設定成引數。void dfs 引數用來表示狀態 if 越界或者是不合法狀態 return if 特殊狀態 剪枝 return for 擴充套件方式 dfs全排列 include include ...

DFS基礎入門

dfs思想 通過迭代遞迴進行搜尋 2.搜尋的結束條件 3.確定下層搜尋入口 4.重複判斷 5.分析題目,觀察路徑是否需要訪問多次,若是則需要回溯,反之,不用 include bits stdc h using namespace std int k,n int num 20 a 20 num用來儲存...