单词序列

简介: 题目链接总时间限制: 1000ms 内存限制: 1024kB描述给出两个单词(开始单词和结束单词)以及一个词典。找出从开始单词转换到结束单词,所需要的最短转换序列。转换的规则如下:1、每次只能改变一个字母2、转换过程中出现的单词(除开始单词和结束单词)必须存在于词典中例如:...

题目链接

总时间限制: 
1000ms
内存限制: 
1024kB
描述

给出两个单词(开始单词和结束单词)以及一个词典。找出从开始单词转换到结束单词,所需要的最短转换序列。转换的规则如下:

1、每次只能改变一个字母

2、转换过程中出现的单词(除开始单词和结束单词)必须存在于词典中

例如:

开始单词为:hit

结束单词为:cog

词典为:[hot,dot,dog,lot,log,mot]

那么一种可能的最短变换是: hit -> hot -> dot -> dog -> cog,

所以返回的结果是序列的长度5;

注意:

1、如果不能找到这种变换,则输出0;

2、词典中所有单词长度一样;

3、所有的单词都由小写字母构成;

4、开始单词和结束单词可以不在词典中。

输入
共两行,第一行为开始单词和结束单词(两个单词不同),以空格分开。第二行为若干的单词(各不相同),以空格分隔开来,表示词典。单词长度不超过5,单词个数不超过30。
输出
输出转换序列的长度。
样例输入
hit cog
hot dot dog lot log
样例输出
5

分析:

http://www.cnblogs.com/bleopard/p/4066262.html

http://blog.csdn.net/loi__dijiang/article/details/52812774

最朴素的BFS可过。主要是对于字符串的处理。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<queue>
 5 
 6 using namespace std;
 7 
 8 struct Note
 9 {
10     string sf;
11     int nus;
12 } d[31];
13 
14 string ks,es;
15 queue<int> q;
16 bool b[31],vis;
17 int length;
18 int sum=0;
19 
20 int gs(string x,string y)
21 {
22     int sum=0;
23     for(int i=0;i<length;i++) if(x[i]!=y[i]) sum++;
24     return sum;
25 }
26 
27 int main()
28 {
29     cin>>ks>>es;
30     length=ks.size();
31     int i=1;
32     char ch;
33     d[i].sf=ks;
34     i=2;
35     while(cin>>d[i].sf) i++;
36     d[i].sf=es;
37     q.push(1);
38     while(!q.empty())
39     {
40         int cur=q.front();
41         q.pop();
42         if(d[cur].sf==es) 
43         {
44             printf("%d\n",d[cur].nus+1);
45             vis=1;
46             break;
47         }
48         for(int j=1;j<=i;j++)
49         {
50             if(gs(d[cur].sf,d[j].sf)==1&&!b[j])
51             {
52                 d[j].nus=d[cur].nus+1;
53                 q.push(j);
54                 b[j]=1;
55             }
56         }
57     }
58     if(!vis) printf("0\n");
59     return 0;
60 }

 

相关文章
|
3月前
leetcode-2047:句子中的有效单词数
leetcode-2047:句子中的有效单词数
21 0
|
7月前
逆序一个字符串的每一组单词(不是倒叙)
整体思路: 1.先将整个字符串倒叙:i like china.->.anihc ekil i 2.将倒叙后的每一块单词再倒叙:.anihc->china. 想必大家都发现了,倒叙整个字符串和倒叙每一块是一样的,那么我们不妨写一个倒叙的函数在这里用reserve表示!
31 0
|
9月前
|
Go
1185:单词排序
1185:单词排序
|
11月前
7-81 单词长度
7-81 单词长度
76 0
|
11月前
2114. 句子中的最多单词数
一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。 给你一个字符串数组 sentences ,其中 sentences[i] 表示单个 句子 。 请你返回单个句子里 单词的最多数目 。
67 0
LeetCode 1832. 判断句子是否为全字母句
全字母句 指包含英语字母表中每个字母至少一次的句子。
74 0
C/C++编程题之句子逆序
C/C++编程题之句子逆序
|
算法 Java 索引
【算法】给定一个字符串 s 和一些长度相同的单词 words,串联所有单词的子串。要不要来试一试?
给定一个字符串 s 和一些长度相同的单词 words串联所有单词的子串
104 0
【算法】给定一个字符串 s 和一些长度相同的单词 words,串联所有单词的子串。要不要来试一试?
串联所有单词的子串
串联所有单词的子串
|
算法 前端开发
句子中的最多单词数
🎈每天进行一道算法题目练习,今天的题目是“句子中的最多单词数”,一道简单题。
184 0