题解 P1071 潜伏者

 

注意:每一个字母都要有且只有对应一个答案,并且,每一个答案都要有且只有对应一个字母,例如:

题目所述“如某条信息“XYZ”被翻译为“ABA”就违反了“不同字母对应不同密字”的规则。”其实还有另外一种违反情况需要考虑:信息“OPO”被翻译为“JKL”。这时也要输出Failed。

就像DNA的碱基对一样。

#include<bits/stdc++.h>
 using namespace std;
 char s[120],sb[120];
 string a,b,c;
 int main()
 {
     cin>>a>>b>>c;
     for(int i=0;i<a.length();i++) 
       if((!s[int(a[i])]||s[int(a[i])]==b[i])&&(!sb[int(b[i])]||sb[int(b[i])]==a[i]))
       {
           s[int(a[i])]=b[i];
           sb[int(b[i])]=a[i];
        } 
       else
       {
           cout<<"Failed";
           return 0;
       }
    for(int i=int('A');i<=int('Z');i++) if(!s[i])
    {
        cout<<"Failed";
        return 0;
    }
    for(int i=int('A');i<=int('Z');i++) if(!sb[i])
    {
        cout<<"Failed";
        return 0;
    }
    for(int i=0;i<c.length();i++)
    {
        if(!s[int(c[i])]) 
        {
            cout<<"Failed";
            return 0;
        }
        c[i]=s[int(c[i])];
    }
    for(int i=0;i<c.length();i++) cout<<c[i];
    return 0;
 }

 

上一篇:【dfs】拔河比赛(ybtoj dfs-1-1)


下一篇:120道 Python 面试题