洛谷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;
}

 

posted @ 2019-10-21 15:24  晴屿  阅读(170)  评论(0编辑  收藏  举报