27分求助
查看原帖
27分求助
422387
VIOLET__FOREVER楼主2022/4/30 08:51

自以为代码没问题的我


#include<bits/stdc++.h>
using namespace std;
int n,frist,last,h=0;
string a,ans="",w;
char flag1,flag2;
struct node{
	string name;
	char b,e;
	bool bo;
}s[10005];
map<char,int> cnt;
void dfs(int x){
	s[x].bo=1;
	cout<<s[x].name;
	h++;
	if(x!=last) cout<<".";
	for(int i=1;i<=n;i++){
		if(!s[i].bo && s[i].b==s[x].e){
			if(i==last){
				cout<<s[i].name; 
			}
			else dfs(i);
			
		}
	}
}
bool cmp(node x,node y){
	return x.name<y.name;
}
int main(){
	cin>>n;
	if(n==1){
		cin>>a;
		cout<<a;
		return 0;
	}
	for(int i=1;i<=n;i++){
		cin>>a;
		s[i].name=a;
		s[i].b=a[0];
		s[i].e=a[a.size()-1];
		cnt[s[i].b]++;
		cnt[s[i].e]++;
	}
	for(char i='a';i<='z';i++){
		if(cnt[i]>=2) h+=cnt[i]/2;
		if(cnt[i]%2==1){
			if(flag1==0) flag1=i;
			else flag2=i;
		}
	}
	if(flag1>flag2) swap(flag1,flag2);
	if(h+1!=n){
		cout<<"***";
		return 0;
	}
	sort(s+1,s+1+n,cmp);
	for(int i=1;i<=n;i++){
		if(s[i].b==flag1){
			frist=i;
			break;
		}
	}
	for(int i=n;i>=1;i--){
		if(s[i].e==flag2){
			last=i;
			break;
		}
	}
	dfs(frist);
	return 0;
}

求救大佬们

2022/4/30 08:51
加载中...