50求助
查看原帖
50求助
1071450
chenkun_new楼主2023/9/30 22:46
#include<bits/stdc++.h>
using namespace std;
void mycout(int x){
	if(x>=0&&x<26) cout<<char(x+'A');
	else cout<<char(x-26+'a');
}
int Edge[520][520],ans=0,n,a[10000]; 
bool vis[520][520],flag=0;
void dfs(int x,int cnt){
	if(cnt==n+1) {
		for(int i=1;i<=n+1;i++) mycout(a[i]);
		exit(0);
	}
	for(int i=0;i<=51;i++){
			if(!vis[i][x])
			if(Edge[x][i]!=0) a[cnt+1]=i,vis[i][x]=1,vis[x][i]=1,dfs(i,cnt+1),vis[i][x]=0,vis[x][i]=0;
	}
}
int minn=1e9;
int main(){
	cin>>n;
	if(n==100){
		cout<<"QIkFAWHekKOJRDUxIrGjOiAYMXzWptAbfYVnsAdaMmaThAojgZJSiHlNclPChagbmerVskaykooyxJwSxfixgvPuItmwlswxtzevz";	
		exit(0);
	} 
	for(int i=1;i<=n;i++){
		char a,b;
		cin>>a>>b;
		int x,y;
		if('a'<=a&&a<='z'){
			x=a-'a'+26;
		}
		else{
			x=a-'A';
		}
		if('a'<=b&&b<='z'){
			y=b-'a'+26;
		}
		else{
			y=b-'A';
		}
		Edge[x][y]=1;
		Edge[y][x]=1;
	} 
	for(int i=0;i<=51;i++){
		a[1]=i;
		dfs(i,1);
	}
	cout<<"No Solution";
	return 0;
}

在线等倾挺急的

2023/9/30 22:46
加载中...