1623】Relation(思維模擬,拆解字串)
阿新 • • 發佈:2018-12-15
題幹:
一天,ikki在看書的時候發現書上有個類似於家譜狀的插圖,突然ikki想到了一個有趣的現象:有時候用某個人一連串
的關係描述另一個人的時候,最後可能還是他本身。例如:小明的爸爸的爸爸和小明的爺爺是同一個人。
現在ikki給你出了個題目:如果用關於小明的一連串的關係去描述兩個人,最後這兩個人是否是同一個人呢?
Input
多組測試資料。第一行一個正整數T表示資料的組數。
對於每組測試資料,輸入兩行長度不超過40的字串來描述兩個人和小明的關係,關係表示一共有6種
方式:’F’表示爸爸,’M’表示媽媽,’P’表示爺爺,’Q’表示奶奶,’K’表示外公,’G’表示外婆。
Output
對於每組資料,如果描述的是同一個人輸出YES,否則輸出NO,每組輸出佔一行。
Sample Input
2
PFMMF
FFFGF
KMFFMM
MFFFQM
Sample Output
YES
NO
解題報告:
思路就是把爺爺奶奶姥姥姥爺拆成FF等等。。。就是把兩輩關係拆開,,就解決了。
AC程式碼:
#include<cstdio> #include<queue> #include<cstring> #include<cmath> #include<map> #include<iostream> #include<algorithm> #define ll long long using namespace std; char s1[55],s2[55]; char q1[1000],q2[1000]; int top1,top2; int main() { int t; cin>>t; while(t--) { scanf("%s",s1); scanf("%s",s2); top1 = top2 = -1; for(int i = 0; i<strlen(s1); i++) { if(s1[i] == 'P') { q1[++top1] = 'F'; q1[++top1] = 'F'; } else if (s1[i] == 'Q') { q1[++top1] = 'F'; q1[++top1] = 'M'; } else if(s1[i] == 'K') { q1[++top1] = 'M'; q1[++top1] = 'F'; } else if(s1[i] == 'G') { q1[++top1] = 'M'; q1[++top1] = 'M'; } else q1[++top1] = s1[i]; } for(int i = 0; i<strlen(s2); i++) { if(s2[i] == 'P') { q2[++top2] = 'F'; q2[++top2] = 'F'; } else if (s2[i] == 'Q') { q2[++top2] = 'F'; q2[++top2] = 'M'; } else if(s2[i] == 'K') { q2[++top2] = 'M'; q2[++top2] = 'F'; } else if(s2[i] == 'G') { q2[++top2] = 'M'; q2[++top2] = 'M'; } else q2[++top2] = s2[i]; } q1[++top1] = '\0';q2[++top2] = '\0'; if(!strcmp(q1,q2)) puts("YES"); else puts("NO"); } return 0 ; }