小Z的家庭族谱
Description
小时候有一段儿歌:
爸爸的爸爸叫什么 爸爸的爸爸叫爷爷
爸爸的妈妈叫什么 爸爸的妈妈叫奶奶
妈妈的爸爸叫什么 妈妈的爸爸叫外公
妈妈的妈妈叫什么 妈妈的妈妈叫外婆
现在我们用'A'字符代表爸爸,'B'字符代表妈妈,'C'字符代表爷爷,'D'字符代表奶奶,'E'字符代表外公,'F'字符代表外婆。
现在小Z想用字符串来代表家庭的一个关系表达式,比如:'AB'表示小Z的奶奶,再比如'BAC'表示小Z外公的爷爷。
现在小Z说出了两个字符串S1和S2,问你这两个关系表达式所代表的是同一个人吗?
Input
第一行输入样例组数t (t<20)。
每组样例包含两行输入。(数据保证字符串长度小于30)
第一行:S1代表第一个关系表达式
第二行:S2代表第二个关系表达式
Output
如果两个关系表达式代表的是同一个人那么就输出一行'YES'(不带单引号)
如果两个关系表达式代表的不是同一个人那么就输出一行'NO'(不带单引号)
Sample Input 1
1
AB
D
Sample Output 1
YES
Hint
两个字符串不一定等长哦~
思路:除了AB都拆掉,最后判断是否一样即可
#include<cstdio>
#include<string>
#include<iostream>
#include<cstring>
using namespace std;
char s[50];
int main(){
int T;
scanf("%d",&T);
while(T--){
string a="",b="";
scanf("%s",s);
int len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]=='A'||s[i]=='B')
a+=s[i];
else if(s[i]=='C')
a+="AA";
else if(s[i]=='D')
a+="AB";
else if(s[i]=='E')
a+="BA";
else if(s[i]=='F')
a+="BB";
}
scanf("%s",s);
len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]=='A'||s[i]=='B')
b+=s[i];
else if(s[i]=='C')
b+="AA";
else if(s[i]=='D')
b+="AB";
else if(s[i]=='E')
b+="BA";
else if(s[i]=='F')
b+="BB";
}
if(a==b) printf("YES\n");
else printf("NO\n");
}
return 0;
}