题目:https://www.luogu.org/problemnew/show/P1071
按题意模拟即可。
代码如下:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int const xn=105; int t[30],p[30]; char a[xn],b[xn],c[xn],ans[xn]; int main() { scanf("%s %s %s",a+1,b+1,c+1); int l=strlen(a+1),ll=strlen(c+1); memset(t,-1,sizeof t); memset(p,-1,sizeof p); bool fl=0; for(int i=1;i<=l;i++) { int x=a[i]-'A',y=b[i]-'A'; if((t[x]==-1)^(p[y]==-1)){printf("Failed "); return 0;} if(t[x]!=-1&&p[y]!=-1&&(x!=p[y]||y!=t[x])){printf("Failed "); return 0;} t[x]=y; p[y]=x; } for(int i=0;i<26;i++)if(p[i]==-1){printf("Failed "); return 0;} for(int i=1;i<=ll;i++) { int x=c[i]-'A'; if(t[x]==-1){printf("Failed "); return 0;} ans[i]=t[x]+'A'; } for(int i=1;i<=ll;i++)printf("%c",ans[i]); return 0; }