25. 深度优先搜索DFS的常见用法详解优化-[STL模板]

1.DFS定义—枚举所有完成路径,遍历所有情况(暴力)

1.得到岔路口,死胡同
2.定义栈:遇到岔路口,死胡同入栈。离开岔路口,死胡同出站。


2.例题深入

问题①:n个物品,每件物品质量为w[i],价值为c[i],选出若干件放入容量为V的背包中,在不超过V的前提下,获得最大价值。(1<<n<<20)

分析: 每件物品都有选/不选的可能,这是岔路口。物品质量超过V,就是到达了死胡同!要返回最近的岔路口

不优题解:

O(2n次方)

#include <bits/stdc++.h>
using namespace std;
int n,V,maxvalue;
int w[