题目连接:该题是luogu试炼场的2-5:T2
题目大意:
1 给出一组密码和明码,要求推出相应的索引(key);
2 根据索引,将密码翻译出来。
解题思路:
1 掌握桶的使用,注意查重的细节
上代码:
//luogu071:潜伏者
//考察字符的存储
#include<cstdio>
#include<cstring>
char s[110],s1[110],s2[110];
int l,a[210],b[210];
int main()
{
memset(a,0,sizeof(a));
scanf("%s%s%s",s1,s2,s);//s1是密文;s2是原文;s是需要翻译的密文
l=strlen(s1);
if(l<26) //密文长度不够:失败
{
printf("Failed\n");
return 0;
}
for(int i=0;i<l;i++)//key的字母缺失:失败
{
if(a[s1[i]]==0||a[s1[i]]==s2[i] )
{
a[s1[i]]=s2[i];
}
else
{
printf("Failed\n"); return 0;
}
}
for(int i='A';i<'Z';i++) //key的字母自相矛盾:失败
{
for(int j=i+1;j<='Z';j++)
{
if(a[i]==a[j]) { printf("Failed\n"); return 0; }
}
}
l=strlen(s);
for(int i=0;i<l;i++)//翻译
{
printf("%c",a[s[i]]);
}
return 0;
}