这是30分代码
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
string a,b,c,s;
int ans;
bool flag1[101],flag2[101];
int main()
{
cin>>a>>b>>c;
for (int i=0;i<a.size();i++)
{
if (flag1[a[i]-'A'+1]==0&&flag2[b[i]-'A'+1]==0)
{
s[a[i]-'A'+1]=b[i];
flag1[a[i]-'A'+1]=1;
flag2[b[i]-'A'+1]=1;
ans++;
}
if (s[a[i]-'A'+1]!=b[i]&&flag1[a[i]-'A'+1]==1)
{
cout<<"Failed";
return 0;
}
if (s[a[i]-'A'+1]!=b[i]&&flag2[b[i]-'A'+1]==1)
{
cout<<"Failed";
return 0;
}
if (ans==26) {break;}
}
if (ans<26)
{
cout<<"Failed";
return 0;
}
for (int i=0;i<c.size();i++) {cout<<s[c[i]-'A'+1];}
return 0;
}
这是AC代码
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
string a,b,c,s;
int lena,lenb,lenc,ans;
bool flag1[101],flag2[101];
int main()
{
cin>>a>>b>>c;
for (int i=0;i<a.size();i++)
{
if (flag1[a[i]-'A'+1]==0&&flag2[b[i]-'A'+1]==0)
{
s[a[i]-'A'+1]=b[i];
flag1[a[i]-'A'+1]=1;
flag2[b[i]-'A'+1]=1;
ans++;
}
if (s[a[i]-'A'+1]!=b[i]&&flag1[a[i]-'A'+1]==1)
{
cout<<"Failed";
return 0;
}
if (s[a[i]-'A'+1]!=b[i]&&flag2[b[i]-'A'+1]==1)
{
cout<<"Failed";
return 0;
}
if (ans==26) {break;}
}
if (ans<26)
{
cout<<"Failed";
return 0;
}
for (int i=0;i<c.size();i++) {cout<<s[c[i]-'A'+1];}
return 0;
}
唯一的区别就是多定义了lena,lenb,lenc 但是后面的代码也没用到这三个变量啊