[ CodeVS冲杯之路 ] P1171

时间:2021-09-07 00:12:37

  不充钱,你怎么AC?

  题目:http://codevs.cn/problem/1171/

  代码调了很久才调好啊,一开始题目都看错了(要是真的NOIP肯定没戏了QuQ)

  后面发现CodeVS上的数据输入最后是没有回车的,导致WA烂啊……

  给你两个串,它们每个字母有一一对应的关系,如果遇到不同字母对应相同的就 Failed

  或者相同字母对应不同字母也 Failed,如果最后 'A'-'Z' 其中有没有对应的还是 Failed

  直接开 255 的数组,(其实也可以只开26个)相当于 26 个关键字的哈希

  双判重后检测是否每个字母都有对应

  最后按照对应输出

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#define NA {printf("Failed\n");return 0;}
using namespace std; char d[],s[],a[],v[];
bool f[];
int main()
{
char c;
int i,len,j=;
scanf("%s\n",s);
len=strlen(s);
for (i=;i<len;i++)
{
c=getchar();
if (d[s[i]]!='\0'&&d[s[i]]!=c) NA
else d[s[i]]=c;
}
for (i='A';i<='Z';i++) if (d[i]=='\0'||f[d[i]]) NA else f[d[i]]=;
getchar();
scanf("%s",v);
i=;
while (v[i]>='A'&&v[i]<='Z')
{
if (d[v[i]]!='\0') a[++j]=d[v[i]];
else NA
i++;
}
for (i=;i<=j;i++) printf("%c",a[i]);
return ;
}