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