LeetCode 127. 单词接龙

广度优先搜索获取最短路径方法。

emplace_back(),可以无参数直接调用。

可以用点和边构建图;

unordered_map<string,int> word_id;

vector<vector<int>> edge;//第一维表示每个节点,第二位表示每个相邻的节点

再通过广度优先搜索获取最短路径

queue<int> que;

que.push(begin_id);

vector<int> dis(node_num,INT_MAX);

dis[begin_id]=0;

while(!que.empty())

{

        int id=que.front();

        que.pop();

        if(id==end_id)

            return;

        for(int neignbor_id:edge[id])

        {

            if(dis[neignbor_id]==INT_MAX)

            {

                dis[neignbor_id]=dis[id]+1;

                que.push(neignbor_id);

            }

        }

 

    }

 

也可以直接广度优先搜索并剪枝

 

通过双向广度优先搜索,可以减小搜索空间

广度优先搜索获取最短路径方法。emplace_back(),可以无参数直接调用。可以用点和边构建图;unordered_map<string,int> word_id;vector<vector<int>> edge;//第一维表示每个节点,第二位表示每个相邻的节点再通过广度优先搜索获取最短路径queue<int> que;que.push(begin_id);vector<int> dis(node_num,INT_MAX);dis[begin_id]=0;while(!que.empty()){        int id=que.front();        que.pop();        if(id==end_id)            return;        for(int neignbor_id:edge[id])        {            if(dis[neignbor_id]==INT_MAX)            {                dis[neignbor_id]=dis[id]+1;                que.push(neignbor_id);            }        }    }也可以直接广度优先搜索并剪枝通过双向广度优先搜索,可以减小搜索空间

posted @ 2021-12-07 20:00  80k  阅读(31)  评论(0)    收藏  举报