2019.1.21 单词接龙

Posted qxds

tags:

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

题目传送门

主要就是简单的字符串+深搜

每次枚举可以接下去的单词 再枚举最后取i位作为后缀

枚举不到单词就取长度

上代码

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,len,book[25];
string word[25],fir,ne;
bool judge(string str,string left)//判断是否可以接下去
{
    int l=str.size();
    for(int i=0;i<l;i++)
        if(str[i]!=left[i])return false;
    return true;
}
void dfs(string now,int l)
{
    for(int i=1;i<=n;i++)
    {
        if(judge(now,word[i])&&book[i])
        {
            book[i]--;
            int le=word[i].size();
            int l1=l+le-now.size();//加上单词后的新长度
            for(int j=le-1;j>=1;j--)//枚举前缀
            {
                ne.assign(word[i],j,le-j+1);
                dfs(ne,l1);
            }
            book[i]++;
        }
    }
    len=max(l,len);//取长度
    return;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)book[i]=2;
    for(int i=1;i<=n;i++)cin>>word[i];
    cin>>fir;
    dfs(fir,1);
    printf("%d",len);
    return 0;
}

 

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

Luogu 1019 单词接龙

CODEVS-1018单词接龙

P1019 单词接龙

LeetCode第127题—单词接龙—Python实现

JAVA课堂测试之单词接龙

LeetCode第126题—单词接龙II—Python实现