求助本题MLE问题
查看原帖
求助本题MLE问题
542331
ShadowOfKirisame楼主2023/7/9 15:17
#include<iostream>
using namespace std;
int cti(char x){
	if(x>='A' and x<='Z') return (int)(x-64);
	else return (int)(x-70);
}
char itc(int x){
	if(x>=1 and x<=26) return(char)(x+64);
	else return (char)(x+70);
}
int maps[53][53]={0},st=1;
int ans[26*26+1],in[53],con=0;
bool vis[53]={0};
void dfs(int i){
	for(int j=1;j<=52;j++)
	if(maps[i][j]){
		maps[i][j]--;
		maps[j][i]--;
		dfs(j);
	}
	ans[con++]=i;
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++) {
		char x,y;
		cin>>x>>y;
		int a=cti(x),b=cti(y);
		maps[a][b]=maps[b][a]=1;
		in[a]++,in[b]++;
		vis[a]=vis[b]=1;
	}
	while(!vis[st]) st++;
	int jd=0;
	for(int i=1;i<=52;i++){
		if(vis[i] and in[i]%2!=0) jd++;
	}
	if(jd>2) {
		cout<<"No Solution";return 0;
	}
	for(int i=1;i<=52;i++){
		if(in[i]%2!=0) st=i;break;}
	dfs(st);
     for(int i=con-1;i>=0;i--) cout<<itc(ans[i]);
}

如题,写的代码只过了三个点,后面的都MLE了 数组大小改小过也不行 求指导

2023/7/9 15:17
加载中...