问题描述以及解决过程如下导图

广搜实现如下

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <set>
#include <map>using namespace std;/*判断两个单词是否有连接状态*/
bool connect(string &word1, string &word2) {if (word1.length() == 0 || word2.length() == 0) {return false;}int cnt = 0;for (int i = 0; i < word1.length(); ++i) {if (word1[i] != word2[i]) {cnt ++;}}if (cnt == 1) {return true;}return false;
}/*构建图*/
void get_graph(string &begin_word, std::vector<string> &wordList,std::map<string, std::vector<string> > &graph) {wordList.push_back(begin_word);for (int i = 0;i < wordList.size(); ++i ) {graph[wordList[i]]= std::vector<string> ();}for (int i = 0;i < wordList.size(); ++i) {for (int j = i + 1; j < wordList.size(); ++j) {if (connect(wordList[i], wordList[j])) {graph[wordList[i]].push_back(wordList[j]);graph[wordList[j]].push_back(wordList[i]);}}}
}/*广搜获取最短长度*/
int get_length(string &begin_word, string &end_word,std::map<string, std::vector<string> > graph) {queue<pair<string,int>> Q;set<string> visit;Q.push(make_pair(begin_word,1));visit.insert(begin_word);while(!Q.empty()) {/* code */string node = Q.front().first;int step = Q.front().second;Q.pop();if (node == end_word) {return step;}std::vector<string> node_v = graph[node];for (int i = 0;i < node_v.size(); ++i) {if (visit.find(node_v[i]) == visit.end()) {Q.push(make_pair(node_v[i], step + 1));visit.insert(node_v[i]);}}  }return 0;
}int get_result(string &begin_word, string &end_word, std::vector<string> &wordList) {std::map<string, std::vector<string> > graph;get_graph(begin_word,wordList,graph);return get_length(begin_word,end_word,graph);
}int main(int argc, char const *argv[])
{string begin_word = "hit";string end_word = "cog";std::vector<string> word_list;for (int i = 0;i < 6; ++i) {string tmp;cin >> tmp;word_list.push_back(tmp);}cout << get_result(begin_word, end_word, word_list);return 0;
}

输出如下:

#输入
hot
dot
dog
log
lot
cog#输出
5

搜索:广搜 词语阶梯相关推荐

  1. 【搜索-广搜】 迷宫的最短路径

    题目: 给定一个大小为N*M的迷宫,由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置.试求出起点到终点的最小步数.(本题假定迷宫是有 ...

  2. 搜索 —— 广搜的优化技巧

    [例题] 连连看(HDU-1175)(简单推导):点击这里 字串变换(洛谷-P1032)(string的使用):点击这里 非常可乐(HDU-1495)(三维BFS):点击这里 Mud Puddles( ...

  3. 算法提高课-搜索-双向广搜 AcWing 190. 字串变换:bfs、双向bfs、queue和unordered_map

    题目分析 来源:acwing 分析: 双向广搜主要用在最小步数模型(也称状态图模型)里面,这里整个状态空间一般是指数级别的,用双向广搜可以极大地提高运行效率. 双向广搜,顾名思义,就是从起点和终点都进 ...

  4. 广搜--(搜索的第一道题)图像有用区域

    点这里点击打开链接 今天开始迈出了学习广搜的第一步,因为之前感觉搜索很难理解都没有固定的模式,但是觉得现在又到了不得不面对的时刻.一开始想用递归写的,就是想在外围加上1,然后就遍历一下如果不是0的就让 ...

  5. 小游戏系列算法之五广度优先搜索,双向广搜,八数码,华容道

    前段时间在玩仙五前,遇上了蚩尤冢拼图这个小游戏. 其实就是八数码问题,一直想着如何才能用最少步数求解,于是就写了个程序. Q1:什么是八数码问题? A1:首先假定一个3*3的棋盘(如上图),分别有1, ...

  6. 深搜、广搜、搜索剪枝

    搜索与回溯讲解 文章目录 深搜 方向向量: DFS代码: 题目讲解: 八皇后问题 字符序列 自然数的拆分 广搜 BFS代码: 题目讲解: 瓷砖 关系网络 bfs与dfs的用途与区别 搜索剪枝 可行性剪 ...

  7. 算法之路——深搜、广搜(简单搜索)

    搜索 通过一定的顺序,枚举每一个数据(经常会通过一些判断条件去掉无意义的数据,即剪枝),找到想要的数据的过程. 深度优先搜索(dfs) 深度优先搜索属于图算法的一种,是一个针对图和树的算法,应为缩写为 ...

  8. 广搜(广度优先搜索BFS)

    广度优先搜索 广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之一,其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果.换句话说,它并不考虑结果的可能位置 ...

  9. 专题一:简单搜索、深搜、广搜

    挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...

最新文章

  1. 极客邦科技旗下TGO鲲鹏会成立美国硅谷分会
  2. 给solr配置中文分词器
  3. 【CentOS Linux 7】实验1【Linux文件目录管理】
  4. iframe框架大小自适应
  5. 零基础入门Python I/O:从print函数开始
  6. c#启动mysql数据库服务器_c# - 使用C#应用程序连接Web服务器中的mysql数据库
  7. 使用SaveAsPDFandXPS + jacob实现Java word转pdf
  8. 网站php镜像小偷,网站被镜像了怎么办?
  9. 如何让Win10 新建txt文档, 默认格式UTF-8
  10. 数学建模——相关系数(2)——假设检验
  11. 戴尔豪斯大学计算机科学学费,加拿大研究生申请案例:渥太华大学录取:电子商业科技申请案例【2013】...
  12. iOS组件化方案对比
  13. VMware安装国产化操作系统--统信UOS
  14. 菜鸟、小白在autojs和冰狐智能辅助之间如何选择?
  15. 转:一个基于互联网医疗的创业公司,三年是一个收获
  16. 2022年春招美团二面总结 凉经
  17. 施耐德PLC与西门子PLC以太网通讯
  18. Volley,Glide,Swiperefreshlayout 简单使用
  19. 三维星座图查询_微信我的三维星座图测试游戏
  20. 查询起止时间为同一天,需要查到当天数据

热门文章

  1. day13 paramiko、数据库表操作
  2. LWIP网络接口管理
  3. mysql中sql语句
  4. UVa12096.The SetStack Computer
  5. clientcontainerThrift Types
  6. MD5 - Bump Mapping
  7. 当前linux环境做出镜像,把当前ubuntu系统做成镜像
  8. python教学反思_Python第3课if教学反思:准备充分承上启下,优化内容模式初显
  9. c# tcp显示服务器图片,C# TCP通迅原码(服务器与客户端相互发送文本与图片)
  10. echarts切换折线图变大_这个月,我就和折线图杠上了...