java 将单词转换为_java bfs实现单词最少转换次数

java bfs实现单词最少转换次数

发布时间:2020-05-29 17:28:51

来源:亿速云

阅读:158

作者:鸽子

#include

#include

#include

#include

#include

#include

using namespace std;

bool connect(string &word1,string &word2)

{

int cnt = 0;

for(int i = 0; i < word1.length(); i++)

if(word1[i] != word2[i])

cnt++;

return cnt == 1;

}

void construct_graph(string &beginword,vector &wordlist, map > &graph)

{

wordlist.push_back(beginword);

for(int i = 0; i < wordlist.size(); i++)

graph[wordlist[i]] = vector();

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 BFS_wordlist(string &beginword, string &endword, map > &graph)

{

queue > q;

set visit;

q.push(make_pair(beginword,1));

visit.insert(beginword);

while(!q.empty())

{

string node = q.front().first;

int step = q.front().second;

q.pop();

if(node == endword)

{

return step;

}

vector brothers = graph[node];

for(int i = 0; i < brothers.size(); i++)

{

if(visit.find(brothers[i]) == visit.end())

{

q.push(make_pair(brothers[i], step+1));

visit.insert(brothers[i]);

}

}

}

return 0;

}

int main()

{

string beginword,endword;

vector wordlist;

map > graph;

wordlist.push_back("hot");

wordlist.push_back("dot");

wordlist.push_back("dog");

wordlist.push_back("lot");

wordlist.push_back("log");

wordlist.push_back("cog");

cin>>beginword;

cin>>endword;

construct_graph(beginword,wordlist,graph);

cout<

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值