zoukankan      html  css  js  c++  java
  • 洛谷P1071 潜伏者(水题

    题目描述太多了就不复制了,大意是给s1和s2两个字符串,其中s1为被加密过的,s2为没被加密的原串。加密方式是原来字母被另一个字母所表示。用map表示很简单的。

    然后再给一个字符串要你翻译解开。

    题目要求是说,必须26个字母都有对应的解码,一个字母只能被一个字母所表示。不符合就翻译失败,符合就输出翻译结果。

    上午洛谷随便专题抓的,,有个例子没过,手快按了数据下载x,又面向数据编程了,发现自己没有处理一个字母被两个字母表示的情况x,这个习惯问题很大,,尽量自己找bug,不要直接看数据

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const int N = 1e3+7;
     5 char s1[N],s2[N],fina[N];
     6 map<char,char>mp,mmp;
     7 int main(){
     8     ios::sync_with_stdio(0);
     9     cin>>s1>>s2>>fina;
    10     int l = strlen(s1);
    11     for(int i = 0;i < l;++i){
    12         if(!mp[s1[i]]){    mp[s1[i]] = s2[i];    mmp[s2[i]] = s1[i];//x-y y-x
    13         }
    14         else if(mp[s1[i]]!=s2[i]){cout<<"Failed"<<endl;return 0;}
    15     }
    16     if(mp.size()<26||mmp.size()<26){cout<<"Failed"<<endl;return 0;}//查验有没有一个字母被两个映射了
    17     int l2 = strlen(fina);
    18     for(int i = 0;i < l2;++i){
    19         fina[i] = mp[fina[i]];
    20     }
    21     cout<<fina<<endl;
    22 }
  • 相关阅读:
    JS中的prototype与面向对象
    机电传动控制第二周学习笔记
    第三周作业
    机电传动控制第四周作业
    第五周学习笔记
    机电传动控制第一周学习笔记
    个人项目图书管理系统登陆功能模拟
    GITHUB使用及入门总结
    我的github地址
    工作压力改变了我?
  • 原文地址:https://www.cnblogs.com/h404nofound/p/12179740.html
Copyright © 2011-2022 走看看