luoguoj–p1071–潜伏者

Problem URL:Spine
事实上这是一道很简单的模拟…与其说是个字符串,不如说是模拟好。其中需要注意两点,一就是有没有重复定义的,这个事实上可以在输入的时候扫出来;二就是扫描有没有某些字母没有对应密字。剩下就是Pure Simulation了
题解如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

bool vis[110];
char list[1001];
char enc[110];
char raw[110];
char msg[110];
int len1,len2;

void init(){
  memset(vis,false,sizeof(vis));
  scanf("%s",enc);
  scanf("%s",raw);
  scanf("%s",msg);
  len1=strlen(enc);
  len2 = strlen(raw);
}

void spaw(){
  if(len1!=len2){
    cout<<"Failed";
    exit(0);
  }
  for(int i=0;i<len1;i++){
    if(vis[raw[i]] && list[enc[i]]!=raw[i]){
      cout<<"Failed";
      exit(0);
    }
    vis[raw[i]]=true;
    list[enc[i]]=raw[i];
  }
  return;
}

void verti(){
  for(char i='A';i<='Z';i++){
    if(!vis[i]){
      cout<<"Failed";
      exit(0);
    }
  }
}

void output(){
  int len=strlen(msg);
  for(int i=0;i<len;i++){
    cout<<list[msg[i]];
  }
  return;
}

int main(){
  
  // freopen("test.out","w",stdout);
  init();
  spaw();
  verti();
  output();
  return 0;
}