dfs的两种处理方法
2024-10-18 07:09:01
方法一:
对于源点s,初始化vis[s]=1,并且在dfs之后vis[s]=1,为下一次调用做准备 。对于dfs递归中的寻找后继的循环体,入栈出栈语句写在循环内。
模板:
//调用
vis[s]=;
dfs(s);
vis[s]=; //dfs
void dfs(int s){
if(s==e){
return; //一定要有返回
}
for(i){
path.push_back(i);
vis[i]=;
dfs(i);
vis[i]=;
path.pop_back();
}
}
这样得到的路径path,是不包含源点的。注意在输出时加上源点。
方法二:
不用标记源点已访问。出入栈与访问标记抹去语句写在循环外。
模板:
//调用
dfs(s); //dfs
void dfs(int s){
if(s==e){
return; //一定要有返回
}
path.push_back(s);
vis[s]=;
for(i){
dfs(i);
}
vis[s]=;
path.pop_back();
}
这样得到的路径path,是不包含终点的。注意在输出时加上终点。
最新文章
- 如何为你的微信小程序体积瘦身?
- Web API 强势入门指南
- C fopen
- Repaint轨迹保留?(待处理,待编辑)
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式
- point\polyline\polygon的转化(转)
- js “+” 连接字符串&;数字相加 数字相加出现多位小数 函数调用单引号双引号嵌套和转义字符的使用
- ListBox获取行字符串
- Ubantu下编译Linux Kernel
- smarty如何处理状态值的显示
- Vue + iView + vuex + vee-validate 完整项目总结
- [CVPR2017] Weakly Supervised Cascaded Convolutional Networks论文笔记
- reuters-多分类问题
- Mock7 moco框架重定向
- firefox 屏蔽Backspace按键的后退功能
- Unity3D 在Update中不要过多地修改Transform 信息
- 如何用Python计算Softmax?
- Forward团队-爬虫豆瓣top250项目-项目进度
- dubbo直连代码示例
- Log4net 使用之 日期字段格式化