题目:https://www.luogu.org/problemnew/show/P1071
模拟水题。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=30,M=105; int dy[N],n; bool flag,vis[N]; char a[M],b[M]; int main() { scanf("%s",a+1); n=strlen(a+1); scanf("%s",b+1); for(int i=1;i<=n;i++) { int u=a[i]-'A'+1,v=b[i]-'A'+1; if(dy[u]&&dy[u]!=v){flag=1;break;} else if(!dy[u])dy[u]=v; } for(int i=1;i<=26;i++)vis[dy[i]]=1; for(int i=1;i<=26;i++)if(!vis[i]){flag=1;break;} if(flag){puts("Failed");return 0;} scanf("%s",a+1); n=strlen(a+1); for(int i=1;i<=n;i++) printf("%c",dy[a[i]-'A'+1]+'A'-1); printf(" "); return 0; }