• BFS,DFS伪代码


    //bfs
    
    #define queue_init  (head=tail=0)
    
    #define queue_is_empty (head==tail)
    
    #define en_queue(x)  (queue[tail++]=x)
    
    #define de_queue  (queue[head++]) 
    
    int head, tail;
    
    类型 queue[MAX*MAX];     //队列中的元素类型可以是结构体,也可以基本类型(int, char等)
    
    int vis[MAX][MAX];            //用于记录状态转移次数
    
     
    
    int bfs()
    
    {
    
        queue_init;
    
        en_queue(起点);
    
        while(!queue_is_empty) {
    
            p = de_queue;
    
            if p是终点
    
               return vis[p.x][p.y];
    
            计算 nextp
    
            if nextp 不合法
    
               continue;
    
            vis[nextp.x][next.y] = vis[p.x][p.y] + 1;  //记录nextp的状态转移次数
    
            en_queue(next);
    
        }
    
    }
     
         
    
    //dfs
    
    void dfs(int x, int y, int d) //每次dfs回退时,需要恢复的值可以用参数管理
    
    {
    
        if 结束条件
    
            计算ans     //ans最好是全局变量
    
        for(按顺序遍历)
    
        {
    
            计算next point
    
            if 不合法
    
               continue
    
            如果需要更新地图数组,在这里先备份,再更新
    
            dfs(next.x, next.y, d+1);
    
            恢复地图数组
    
        }
    
    }  
     
  • 相关阅读:
    20200816
    20200815
    20200813
    20200811
    20200810
    20200806
    20200804
    20200803
    20200802
    20200801
  • 原文地址:https://www.cnblogs.com/wujixing/p/6282325.html
Copyright © 2020-2023  润新知