/*BFS模板*/
/*maxn行maxn列的迷宫*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 100
int a[maxn][maxn];//存迷宫
bool book[maxn][maxn];//访问标记
int dir[4][2] = { 0,1,1,0,0,-1,-1,0 };//四方向的方向向量
struct note//队列中的数据结构
{
int x, y;//坐标
int tatal;//计数器
};
int main()
{
//输入n,m,迷宫,起始位置等等
queue<note>q;//声明队列
note now, next;//两个状态
note st;
st.tatal = 0; //计数器清零
q.push(st);//入队
book[st.x][st.y] = 1;//访问标记
while (!q.empty())//队列不为空时
{
now = q.front();//取队首元素进行扩展
for (int k = 0; k < 4; k++)//枚举四个方向
{
next.x = now.x + dir[k][0];
next.y = now.y + dir[k][1];
//判断是否越界,用continue
//判断是否满足条件或者是否走过
if (满足条件)
{
next.tatal = now.tatal + 1;
book[next.x][next.y] = 1;
q.push(next);//新扩展点入队
}
}
q.pop();//队首元素出队
}
return 0;
}
/*DFS模板*/
int dfs(int t)
{
if(满足输出条件)
{
输出解;
}
else
{
for(int i=1;i<=尝试方法数;i++)
if(满足进一步搜索条件)
{
为进一步搜索所需要的状态打上标记;
search(t+1);
恢复到打标记前的状态;//也就是说的{回溯一步}
}
}
}