C++之广搜相关知识与例题

1,状态,转移与枚举

什么是状态?什么是转移?什么是枚举?

状态

状态就是在搜索递归期间所需寻求答案的几个变量(这概念有点难懂,看到下面自然就懂了)。

比如说如下代码:

void dfs(int x, int step){
	if(step == 114514){
		return ;
	}
	dfs(x + 1, step + 1);
}

在上面代码,状态是 x 和 step(其实看状态是什么变量就看函数所使用了哪些变量),如果还是没有懂,可以去问问度娘

转移

转移就是对不同情况而对状态进行更改,在上面代码中,它的状态转移为:

当 step 不为 114514 时,(x + 1, step + 1),当 step 为 114514 时,退出递归。

枚举

枚举就是在通过不断调用函数(递归)来查找答案,可以理解为广义的枚举。

另外,在分析时,不要忘了时间复杂度和空间复杂度。

2,相关数据结构

在学习广搜之前,必须要学会这个数据结构:队列

队列(FIFO,全名Fir

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值