广度优先搜索(BFS--Breath-First-Searsh)

思想

题目:问123的排列有多少种

将1,2,3放在一个队列上一次向后加数--具体看图示与树形图示

图示

广度优先搜索(BFS--Breath-First-Searsh)_第1张图片

树形图示

广度优先搜索(BFS--Breath-First-Searsh)_第2张图片

代码模板(c/c++)

struct Node{
    int x,y;
    Node(){}
    Node(int_x,int_y):x(_x),y(_y){}
};

bool vis[...][...];

viod bfs(int x,int y){
    queue q;
    q.push(Node(x,y));
    vis[x][y]=true;
    while(!q.empty()){
        Node f = q.front();
        q.pop();
        cnt++;
        for(int i=0;i<4;i++){
            int tx=f.x+dx[i];
            int ty=f.y+dy[i];
            if(tx>=0 && tx=0 && ty

广搜蔓延障碍物

广度优先搜索(BFS--Breath-First-Searsh)_第3张图片

代码模板

struct Node{
    int x,y;
    Node(){}
    Node(int_x,int_y):x(_x),y(_y){}
};

bool vis[...][...];

viod bfs(int x,int y){
    queue q;
    q.push(Node(x,y,0));
    vis[x][y]=true;
    while(!q.empty()){
        Node f = q.front();
        q.pop();
        cnt++;
        for(int i=0;i<4;i++){
            int tx=f.x+dx[i];
            int ty=f.y+dy[i];
            if(tx>=0 && tx=0 && ty

我所做的不一定完全正确(如广搜蔓延障碍物)

还有一些其他大佬大佬的做法

广度优先搜索算法(附C++实现)

[C++]广度优先搜索(BFS)(附例题)

你可能感兴趣的:(c++那些算法,c++,算法,bfs,广度优先)