摘要

题目链接 难度等级 完成状态 完成分数 最后编辑时间 需要注意
单词接龙 ★☆☆☆☆ 答案正确 100 2014-10-17 23:27:16

题意

一堆单词,一个字母开始,单词首尾相连(可重复多个字母),每个单词最多用2次,最长能接多长?

题解

暴搜就好了,没什么技巧。

代码

1018.cpp代码已折叠
展开折叠内容
#include<iostream>
#include<vector>
using namespace std;
int n,maxLen=0;
vector<string> Str;
vector<int> Used;
void dfs(const char& strId,const int &count,const int &len)
{
    maxLen=max(maxLen,len);
    for(int i=0;i<n;++i)
    {
        if(Used[i]>0)
        {
            Used[i]--;
            for(int j=min(Str[strId].size(),Str[i].size())-1;j>=1;--j)
            {
                string strCut(Str[strId],Str[strId].size()-j,j),
                    newstrCut(Str[i],0,j);
                if(strCut==newstrCut)
                {
                    dfs(i,count+1,len+Str[i].size()-j);
                }
            }
            Used[i]++;
        }
    }
}

int main()
{
    cin>>n;
    string str;
    for(int i=0;i<n;++i)
    {
        cin>>str;
        Str.push_back(str);   
        Used.push_back(2);  
    }
    char start;
    cin>>start;
    for(int i=0;i<n;++i)
    {
        if(start==Str[i][0])
        {
            Used[i]--;
            dfs(i,1,Str[i].size());
            Used[i]++;
        }
    }
    cout<<maxLen<<endl;
    return 0;
}

著作权声明[编辑]

关于[编辑]