单词序列

Posted 寄蜉蝣于天地,渺沧海之一粟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单词序列相关的知识,希望对你有一定的参考价值。

题目链接

总时间限制: 
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 }

 

以上是关于单词序列的主要内容,如果未能解决你的问题,请参考以下文章

编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。(代码片段

如果我想从另一个片段中添加书签,为啥我的书签单词没有保存到 sqlite 数据库?

如何通过C#中的特定片段从句子中提取整个单词?

PHP 很短的片段:PHP单词剪切

21个常用代码片段

VsCode 代码片段-提升研发效率