map——映射(message.cpp)

來源:互聯網
上載者:User

標籤:

資訊交換

(message.cpp)

 

【題目描述】

       Byteland戰火又起,農夫John派他的奶牛潛入敵國擷取情報資訊。

       Cow曆盡千辛萬苦終於將敵國的編碼規則總結如下:

       1 編碼是由大寫字母組成的字串。

2 設定了密字。加密的過程就是把原資訊的字母替換成對應密字。

       3 一個字母有且僅有一個對應密字,不同字母對應不同密字。

       如今,Cow終於擷取了敵國發送的一條加密資訊和對應的原資訊。Cow如下破解密碼:掃描原資訊,對於原資訊中的字母x,找到它在加密資訊中的對應大寫字母y,且認為y是x的密字。

       Cow的工作停止於以下情況:

       1 資訊掃描完畢且沒有差錯

       2 掃描完畢但有字母沒有在原資訊中出現。

       3 掃描中出現矛盾或錯誤,即違反上述的規則。

       現在,John發來資訊,要求Cow利用破譯的密字翻譯一條剛剛截獲的敵國資訊。

【檔案格式】

輸入檔案:

       第一行為Cow知道的一條加密資訊。

       第二行為加密資訊的原資訊。

       第三行為John要求Cow翻譯的加密資訊。

輸出檔案:

       一行,如果出現2 3 所示的停止情況則輸出“Failed”,否則翻譯John傳送的資訊。

 

【範例資料】

#1

Input

QWERTYUIOPLKJHGFDSAZXCVBN

ABCDEFGHIJKLMNOPQRSTUVWXY

DSLIEWO

 

Output

Failed

 

#2

Input

QWERTYUIOPLKJHGFDSAZXCVBNM

ABCDEFGHIJKLMNOPQRSTUVWXYZ

IQHPOQKGHU

 

Output

HANJIALONG

 

 

這道題直接上map映射就可以了

 

下面上資料:

map的基本操作函數:
      C++ Maps是一種關聯式容器,包含“關鍵字/值”對
      begin()          返回指向map頭部的迭代器
      clear()         刪除所有元素
      count()          返回指定元素出現的次數
      empty()          如果map為空白則返回true
      end()            返回指向map末尾的迭代器
      equal_range()    返回特殊條目的迭代器對
      erase()          刪除一個元素
      find()           尋找一個元素
      get_allocator()  返回map的配置器
      insert()         插入元素
      key_comp()       返回比較元素key的函數
      lower_bound()    返回索引值>=給定元素的第一個位置
      max_size()       返回可以容納的最大元素個數
      rbegin()         返回一個指向map尾部的逆向迭代器
      rend()           返回一個指向map頭部的逆向迭代器
      size()           返回map中元素的個數
      swap()            交換兩個map
      upper_bound()     返回索引值>給定元素的第一個位置
      value_comp()      返回比較元素value的函數

這道題的代碼:

 1 #include<iostream> 2 #include<cstdio> 3 #include<map> 4 #include<string> 5  6 using namespace std; 7  8 map<char,char> bianma; 9 10 string a,b,c;11 int cishu=0;12 13 int main()14 {15     freopen("message.in","r",stdin);16     freopen("message.out","w",stdout);17     cin>>a>>b>>c;18     for(int i=0;i < a.length(); i++)19     {20         if(bianma.count(a[i]))21         {22             if(bianma[a[i]]!=b[i])23             {24                 cout<<"Failed";25                 return 0;26             }27         }28         else29         {30                 cishu++;31                 bianma[a[i]]=b[i];32         }33     }34     if(cishu!=26)35     {36         cout<<"Failed";37         return 0;38     }39     for(int i=0;i<=c.length();i++)40     {41         c[i]=bianma[c[i]];42     }43     cout<<c;44     return 0;45 } 

(本代碼原題能過9個點)

map——映射(message.cpp)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.