比赛 练习赛 评测结果 AAAAAAAAA
题目名称 单词接龙 最终得分 100
用户昵称 氢氦 运行时间 0.022 s
代码语言 C++ 内存使用 13.66 MiB
提交时间 2019-05-21 20:30:50
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>

using namespace std;

int n,maxn,ans,vis[25];
string str[25];

int check(string &str1,string &str2)
{
    if(str1.length()==1){
        if(str1[0]==str2[0])
        return str2.length();
        return 0;
    }
    else{
        for(int i=1;i<str1.length();i++)
        {
            string temp1=str1.substr(str1.length()-i);
            string temp2=str2.substr(0,i);
            if(temp1==temp2)
             return str2.length()-i;
        }
    }
    return 0;
}

void dfs(string &s)
{
    for(int i=0;i<n;i++)
    {
        int temp=check(s,str[i]);
        if(temp&&vis[i]<2)
        {
            vis[i]++;
            maxn+=temp;
            ans=max(ans,maxn);
            dfs(str[i]);
            vis[i]--;
            maxn-=temp;
        }
    }
}

int main()
{
	freopen("dcjl.in","r",stdin);
	freopen("dcjl.out","w",stdout);
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>str[i];
    string ch;
    cin>>ch;
    dfs(ch);
    printf("%d\n",ans);
    return 0;
}