#include <iostream>
using namespace std;
/*
递归模板:
void dfs(参数(地图,起点,终点)){
处理节点
dfs(地图,选择的节点);
回溯,撤销处理结果
}
// DFS模板
void dfs(参数){
if(终止条件){
存放结果
return;// 终止当前的递归不是结束函数
}
for(选择:本连接所有的其他节点){
处理节点
dfs(地图,选择的节点);
回溯,撤销处理结果
}
}
广度优先搜索
1.地图
2.队列
3.状态数组
4.结构体
5.方向数组
struct node{
// 根据题目需求
int x;
int y;
int step;
}; // 方向数组
int dir[4][2]; // 四个方向
int dir[8][2]; // 八个方向
int visited[][]; // 状态数组
int bfs(参数(地图,起点,终点){
queue<node> q; // 队列封装结构体
q.push(起点);
// 起点的状态更新
visited[起点][起点] = 1;
// 预探索节点入队
while(!q.empty()){
// 获取头结点
node head = q.front()// 获取头结点
// 头结点出队
q.pop();
// 判断是否为终点
int x = head.x;
int y = head.y;
if(x ==终点 && y==终点){return}
//预探索方向
for(int i = 0;i<4/8;i++){
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if(nx,ny地图内,visited没有被访问过,地图当前坐标可以走){
visisted[nx][nx] = 1;// 当前坐标已经走过
q.push({nx,ny,step+1}) ;
}
}
}
*/
```