洛谷P1071 潜伏者

https://www.luogu.org/problem/P1071

#include
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) {
        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//翻译
        cout<<mts[to[i]];
    }
    return 0;
}

 

你可能感兴趣的:(洛谷P1071 潜伏者)