泛刷水题

发布于 2019-01-29  273 次阅读


luogu P1019
一道不错的深搜入门题,字符串细节要注意,调了很久结果发现读入时少了个'='(T_T)

#include<string.h>
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,length = 0,use[30];
string s[30];
int canlink(string s1,string s2)
{
    for(int i=1;i<min(s1.length(),s2.length());i++)
    {
        int flag=1;
        for(int j=0;j<i;j++)
            if(s1[s1.length()-i+j]!=s2[j]) flag = 0;
        if(flag)return i;
    }
    return 0;
}
void search(string str,int mlong)
{
    length = max(mlong,length);
    for(int i=0;i<n;i++)
    {
        if(use[i]>=2) continue;
        int c = canlink(str,s[i]);
        if(c>0)
        {
            use[i]++;
        search(s[i],mlong+s[i].length()-c);
            use[i]--;
        }
    }
}
int main(){
    cin>>n;
    for(int i=0;i<=n;i++)
    {
    use[i]=0;
    cin>>s[i];
    }
    search(' '+s[n],1);
    cout<<length;
    return 0;
}

我是一个局部环,你是我的唯一极大理想。