洛谷P1071 潜伏者
https://www.luogu.org/problem/P1071
#include<bits/stdc++.h> using namespace std; map<char,char> mts;//明文对应密文 map<char,char> stm;//密文对应明文 map<char,int> flag;//是否重复(密文) map<char,int> flagm;//是否重复(明文) int main() { string m,s,to; //m为密文 s为原来信息 to为要翻译的 getline(cin,m); getline(cin,s); getline(cin,to); if(s.length()!=m.length()) { //如果长短不一样,直接结束 cout<<"Failed"; return 0; } for(int i=0; i<m.length(); i++) { if( (flag[m[i]]&&s[i]!=mts[m[i]]) || (flagm[s[i]]&&m[i]!=stm[s[i]]) ) { cout<<"Failed"; return 0; } mts[m[i]]=s[i]; stm[s[i]]=m[i]; flag[m[i]]=1; flagm[s[i]]=1; } for(char i='A'; i<='Z'; i++) { //如果出现没有翻译过的 直接结束 if(flag[i]==0) { cout<<"Failed"; return 0; } } for(int i=0; i<to.length(); i++) { //翻译 cout<<mts[to[i]]; } return 0; }