1.DFS深度优先搜索
注意:用递归(其实就是栈)和栈实现。
有n个物品,没见物品的重量为W[i],价值为c[i]。现在需要选出若干件物品放入一个容器为V的
背包中, 是的在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大,
求最大价值。
void DFS(int index, int sumW,int sumC)
{
if(index==n)
{
return;
}
DFS(index+1,sumW,sumC);
if(sumW+w[index]<=V)
{
if(sumC+c[index]>ans){
ans=sumC+c[index];
}
DFS(index+1,sumW+w[index],sumC+c[index]);
}
}
2.广度优先搜索BFS
注意:用队列实现
void BFS(int s)
{
queue<int> q;
q.push(s);
while(!q.empty())
{
取出队首元素top
访问队首元素top;
将队首元素出队;
将top的下一层结点中未曾入队的结点全部入队,并设置为已入队;
}
}