DFS框架
#include<iostream>
using namespace std;
const int N=10;
int n;
int path[N];//存放答案
bool st[N];//标记该元素是否被使用过
void dfs(int u)
{
if(u==n)//当遍历到最后一层时,输出该层
{
for(int i=0;i<n;i++) printf("%d ",path[i]);
printf("\n");
return;//回溯
}
for(int i=0;i<n;i++)
{
if(!st[i])//如果该元素没有被使用过,那么就使用该元素
{
path[u]=i;//存储
st[i]=1;//true标记为已经用过了
dfs(u+1);//向下一层进行搜索
st[i]=0;//回复现场
}
}
}
int main()
{
cin>>n;
dfs(0);
}
BFS框架
queue<int> q;
bool st[N];//标记是否遍历过
void bfs()
{
q.push(1);//入队
st[1]=true;
while(!q.empty())
{
int p=q.front();//取出队首元素
q.pop();//弹出
}
for (int i = h[t]; i != -1; i = ne[i])
{
int j = e[i];
if (!st[j])
{
st[j] = true; // 表示点j已经被遍历过
q.push(j);
}
}
}
【模板】ACwing算法基础课模板小全_基础算法模板下载-CSDN博客
[AcWing算法刷题]之DFS+BFS迷宫模板(简单)_vector<vector<bool>>st(rows,vector<bool>(cols,fals-CSDN博客