深度优先搜索DFS和广度优先搜索BFS

本文详细介绍了两种基本的图遍历算法:深度优先搜索(DFS)与广度优先搜索(BFS)。深度优先搜索利用递归或栈实现,适用于寻找路径或解空间树的探索;广度优先搜索则通过队列实现,常用于寻找最短路径。文章提供了具体代码实例,帮助读者理解算法原理及应用。
摘要由CSDN通过智能技术生成

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的下一层结点中未曾入队的结点全部入队,并设置为已入队;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值