【笨方法学PAT】DFS核心思想与模板

本文详细介绍了DFS算法的核心思想及实现难点,给出了DFS算法的通用模板,并分析了PAT考试中DFS算法的应用场景,包括针对图和树的数据结构处理以及是否需要记录路径等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DFS算法核心思想与难点

【核心思想】不撞南墙不回头,参考:解救小哈——DFS算法举例

【做题难点】维护变量的个数、什么时候标记、什么时候退出、是否需要保存路径、什么时候回溯,可以看下面的几道典型例题,好好揣摩。

二、DFS算法模板

void dfs(int step){
	剪枝{
		相应操作
		return;
	}
	到达目的地{
		更新数据
	}
	尝试每一种可能{
		满足check条件
		标记
		继续下一步dfs(step + 1)
		恢复初始状态(回溯的时候要用到)
	}
}

、PAT中的DFS

DFS属于PAT的基本算法,大题(30分)、小题(25分)都有出现。大概分为两大类,四小类,DFS深搜的是图还是树,是否需要输出路径。

对于图和树,最大的不同是使用的数据结构不同,在DFS还是相当一致;

需要输出路径的话,需要一个单独的数组保存当前路径。

图:不需要记录路径(回溯) 【笨方法学PAT】1003 Emergency(25 分)

图:需要输出路径 1004 Counting Leaves(30 分)

树:不需要记录路径 

树:需要输出路径 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值