搜索单词接龙

Posted gongdakai

tags:

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

原题传送门

思路


这道题主要考察搜索与字符串处理的能力,但也能在答案中看到图论思想的影子,所以这是一道比较考察范围比较广的题目。
这道题的重点其实在于字符串处理,即用尽可能少的时间复杂度分辨两个单词是否可以接龙,搜索方面无需优化,只要字符串处理函数比较快,大爆搜也可以轻松AC,因此,这道搜索题其实实在考察字符串。

Code


#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<stack>
#include<map>
using namespace std;

int e[41][41],b[41]; 
int i,j,n,maxl;
string w[41];

int l(string a,string b)

    for(int i=1;i<=a.length();i++)
    
        string t=a.substr(a.length()-i,i);
        if(t.length()<=b.length()&&t==b.substr(0,t.length()))
                return b.length()-t.length();
    
    return 0;


void dfs(int no,int l)

    if(l>maxl)
        maxl=l;
    int i;
    b[no]=1;
    for(i=0;i<=2*n;i++)
    
        if(b[i]==0&&e[no][i]>0)
        
            dfs(i,l+e[no][i]);
               
    
    b[no]=0;


int main()

    cin>>n;
    for(i=1;i<=n;i++)
    
        cin>>w[i]; 
        w[i+n]=w[i];
    
    cin>>w[0];
    for(i=0;i<=2*n;i++)
        for(j=0;j<=2*n;j++)
            e[i][j]=l(w[i],w[j]);
    dfs(0,1);
    cout<<maxl;
    return 0;

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

洛谷P1019单词接龙 搜索

搜索单词接龙 luogu-1019

洛谷P1019——单词接龙(DFS暴力搜索)

[dfs] aw1117. 单词接龙(dfs搜索顺序+递归理解+好题)

蓝桥杯 算法提高 单词接龙 _DFS_搜索 字符串比较

洛谷 P1019 单词接龙 (DFS)