DFS基礎入門

2021-10-22 17:37:21 字數 2668 閱讀 4368

dfs思想:通過迭代遞迴進行搜尋

2.搜尋的結束條件

3.確定下層搜尋入口

4.重複判斷

5.分析題目,觀察路徑是否需要訪問多次,若是則需要回溯,反之,不用

#include "bits/stdc++.h"

using namespace std;

int k, n;

int num[20], a[20];//num用來儲存選中的數

int ok = 0;

bool is_prime(int a)

}return 1;

}void dfs(int cnt, int a_p)

if (is_prime(sum))ok++;

} else

}}int main()

dfs(0, 0);

printf("%d\n", ok);

}

#include "bits/stdc++.h"

using namespace std;

char a[110][110];

int way_x[4] = ;

int way_y[4] = ;

int n, m;

void dfs(int x, int y, bool type)

if (type) else

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

}}int main()

}for (int i = 1; i <= n; i++)

}for (int i = 1; i <= n; i++)

printf("\n");

}}

#include "bits/stdc++.h"

using namespace std;

int n, m, start_x, start_y;

int a[20][20];

int sum_time = 0x7f7f7f7f;

int way_x[4] = ;

int way_y[4] = ;

void dfs(int x, int y, int life, int time) else if (a[x][y] == 4)

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

}}int main() }}

dfs(start_x, start_y, 6, 0);

if (sum_time == 0x7f7f7f7f)printf("-1\n");

else printf("%d\n", sum_time);

}

#include "bits/stdc++.h"

using namespace std;

char a[510][510];

int n, m;

int way_x[4] = ;

int way_y[4] = ;

void dsf(int x, int y)

}int main()

}for (int i = 1; i < n; i++)

for (int j = 0; j < m; j++)

for (int i = 0; i < n; i++)

}printf("%d\n", sum);

}

#include "bits/stdc++.h"

using namespace std;

int min_cnt = 0x7ffffff;

bool c[205];

int n;

void dsf(int a, int b, int cnt, int k)//a:當前b:目的地cnt:已經走的步數

else if (cnt > min_cnt)return;

c[a] = 0; //標記已經走過

if (a + k[a] <= n && c[a + k[a]]) dsf(a + k[a], b, cnt + 1, k);

if (a - k[a] >= 1 && c[a - k[a]]) dsf(a - k[a], b, cnt + 1, k);

c[a] = 1;//回溯

}int main()

dsf(a, b, 0, k);

if (min_cnt != 0x7ffffff) printf("%d", min_cnt);

else printf("-1");

}

#include "bits/stdc++.h"

using namespace std;

int n, m;

char map1[510][510];

bool vis[510][510];

bool flag = 1;

int way_x[4] = ;

int way_y[4] = ;

void dsf(int x, int y) else

}}int main() }}

dsf(start_x, start_y);

if (flag)printf("no\n");

else printf("yes\n");

}

dfs入門 紅與黑

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

DFS入門 例題

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

DFS 入門系列

problem id 1694 bfs入門成功後,繼續入dfs的坑,那麼先把bfs做過的題用dfs寫一遍吧。馬的遍歷 話說這種題還是bfs好 畢竟快 但為了配合dfs並且不被tle就人工加乙個閾值限制一下吧。受題解大佬提醒 閾值在200左右 上 include define check y,x x ...