【Algorithm】深度优先搜索(DFS)
深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法。
使用递归可以很好地实现深度优先搜索,这个说法并不是说深度优先搜索就是递归,只能说递归是深度优先搜索的一种实现方式,因为使用非递归也是可以实现DFS的思想的,但是一般情况下会比递归麻烦。不过,使用递归时,系统会调用一个叫系统栈的东西来存放递归中的每一层状态,因此使用递归来实现DFS的本质其实还是栈。
有 n 件物品,每件物品的重量为 w[i],价值为 c[i]。现在需要选出若干件物品放入一个容器为V的背包当中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大,求最大价值。(1 <= n <= 20) 在这个问题中,需要从 n 件物品中选择若干件物品放入背包,使它们的价值之和最大。这样的话,对每件物品都有选和不选两种选择,而这就是所谓的“岔路口”。题目要求选择的物品重量总和不超过 V,因此一旦选择的物品重量总和超过 V,就会到达“死路口”,需要返回最近的“岔路口”。 显然,每次都要对物品进行选择,因此 DFS 函数的参数中必须记录当前处理的物品
共有 0 条评论