46求助
查看原帖
46求助
169594
Heart_Of_Iron_4楼主2021/10/21 17:42
#include<bits/stdc++.h>
using namespace std;
string a[1100],c;
int n,h[30],t[30],s,e;
bool b[1100];
void dfs(int k,string p)
{
    if(k==n+1)
    {
        cout<<p;
        exit(0);
    }
    for(int i=1;i<=n;++i)
    {
        if(b[i])continue;
        if(p[p.size()-1]==a[i][0])
        {
            b[i]=1;
            dfs(k+1,p+"."+a[i]);
        }
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i];
        h[a[i][0]-'a']++;
        t[a[i][a[i].size()-1]-'a']++;
    }
    sort(a+1,a+1+n);
    for(int i=0;i<26;++i)
    {
        if(h[i]==t[i]+1)s=i;
        if(t[i]==h[i]+1)e=i;
    }
    for(int i=1;i<=n;++i)
    {
        if(a[i][0]==(s+'a')&&(a[i][a[i].size()-1]!=(e+'a')||t[e]!=1))
        {
            c=a[i];
            b[i]=1;
            break;
        }
    }
    dfs(2,c);
    printf("***");
    return 0;
}
2021/10/21 17:42
加载中...