求助MLE问题
查看原帖
求助MLE问题
542331
ShadowOfKirisame楼主2023/7/10 21:41

题目P1341无序字母对

#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]);
}

本题只A了三个点,后面的都MLE了。。。改过数组大小但没用,求解答

蒟蒻,请大佬勿喷

2023/7/10 21:41
加载中...