讨论 / AC带详细注释
393190931 2015-11-04 10:43:30
点我顶贴 收藏 删除
//利用ASCII码的优势直接进行强制类型转换

#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

char origin[200001];//记录原信息

char trans[200001];//记录翻译信息

char target[200001];//记录要翻译的信息

int ex[201];//记录每个密文中的字母在原信息中的字母

bool exx[201];//记录密文中的字母是否被翻译

bool exxx[201];//记录原信息中字母是否已经使用

int main()

{

//freopen("spy.in","r",stdin);

//freopen("spy.out","w",stdout);

memset(ex,0,sizeof(ex));

memset(exx,0,sizeof(exx));

gets(trans);

gets(origin);

gets(target);

int len=strlen(origin);

for(int i=0;i<len;i++)

{

if(ex[trans[i]]==0)

{

if(exxx[origin[i]])

{

cout<<"Failed";

//fclose(stdin);

//fclose(stdout);

return 0;

}//即为密文中此字母还未被翻译但是原文件中对应字母已被使用

ex[trans[i]]=(int)(origin[i]);

exx[trans[i]]=1;

exxx[origin[i]]=1;

}

else if(ex[trans[i]]!=(int)origin[i])

{

cout<<"Failed";

//fclose(stdin);

//fclose(stdout);

return 0;

} //即为密文中同一个字母对应不同的原文件字母

}

for(int i='A';i<='Z';i++)

{

if(ex[i]==0)

{

cout<<"Failed";

//fclose(stdin);

//fclose(stdout);

return 0;

}

}//即为字母A到Z中还有未翻译的

int len2=strlen(target);

for(int i=0;i<len2;i++)

cout<<(char)(ex[target[i]]);

//fclose(stdin);

//fclose(stdout);

return 0;

}

查看更多回复
提交回复