DFS BFS 代码框架

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博客

猜你喜欢

转载自blog.csdn.net/qq_73704268/article/details/142730989