<span>bfs&dfs模板</span>

摘自几个月前的帖子。。。
DFS模板:向深处搜索,直到找到解或者走不下去。这一般解决全排列问题

//No.1
Void DFS(deep,...{
  if(找到解 || 走不下去了){
   ......//根据题意添加
    return; 
  }
  for(扩展方式){
   if(扩展方式所能达到的状态合法){
      修改操作;//根据题意添加
      标记;
      DFS(deep+1,...);
      //根据题意是否要还原
    }  
  } 
}
//No.2
int check(参数) {
	if(满足条件)
		return 1;
	return 0;
}

void dfs(int step) {
	判断边界 {
		相应操作
	}
	尝试每一种可能 {
		满足check条件
		标记
		继续下一步dfs(step+1)
		恢复初始状态(回溯的时候要用到)
	}
}

BFS模板:通常用队列先进先出实现,解决最小时间/最小步数

void BFS(){
 初始化队列Q;
 起点S入队;
 标记S已经访问;
 while(Q非空){
   取Q的队首元素U;
   U出队列;
   if(u==目标状态){
     返回结果;
    }
   for(所有与U相邻的元素){
     if(相邻的元素合法 && 未访问){
        入队;
        标记访问;
       }
   }
 }
}
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
多多啊&nbsp;多多啊&nbsp;上来四道算法题算法题直播排序,整体比较简单把对象写出来,然后比较规则写明白就OK了。唯一一道A100%的电车充电如何最省钱,到目的地如何充电的钱最少,路上有充电站,每个电站价格不一样。用了DP来做,但感觉是贪心的样子,最后没招了,把不能到的情况给干了出来,过了8%日志分析纠错,滑动窗口,但我最后结果永远少一,过了15%没看,力竭了燃尽了多多&nbsp;以后牛客不用后台找我了,笔试夯爆了
淮竹c:不好意思,打扰大家🙏我是一个拼多多骑手,小电驴的最大电量为C,我的最大电量有1e9这么promax😭😭😭需要从x=0处走到x=L,L足足有1e9那么长处,途中有n个充电站,🙏🙏每个充电站的距离和电价分别为di和pi,初始电量是满的😭😭😭请告诉我到达终点最少要花多少钱😭😭😭求求大家把这些钱转给我
暑期实习笔试记录本
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务