55不知如何继续优化时间复杂度
  • 板块P1127 词链
  • 楼主Ch35
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/8/9 17:40
  • 上次更新2023/10/27 16:15:27
查看原帖
55不知如何继续优化时间复杂度
672360
Ch35楼主2022/8/9 17:40

待优化的结果

#include<bits/stdc++.h>
using namespace std;
int n,maxx,m,b[1005],cnt;
string a[1005],ans[1005],d[1005];
void dfs(char z){
    if(cnt>maxx){
        maxx=cnt;
        for(int i=1;i<=maxx;i++)ans[i]=d[i];
    }
    for(int i=1;i<=n;i++){
        if(b[i]==0&&a[i][0]==z){
            cnt++;
            d[cnt]=a[i];
            b[i]=1;
            dfs(a[i][a[i].size()-1]);
            d[cnt]="";
            cnt--;
            b[i]=0;
        }
    }
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+1+n);
    for(int i=1;i<=n;i++){
        cnt=1;
        d[cnt]=a[i];
        b[i]=1;
        dfs(a[i][a[i].size()-1]);
        for(int i=1;i<=n;i++)b[i]=0;        
    }
    if(maxx==1||maxx==0||maxx==2)cout<<"***";
    else{
    for(int i=1;i<maxx;i++)cout<<ans[i]<<'.';
    cout<<ans[maxx];
    }
	return 0;
}
2022/8/9 17:40
加载中...