迷
一个字符 它可以用作字符 也可以自动就用作它的编码
关于明文和密文的对应细节:(老想起密码子和反密码子……想广红女神)
- 密文明文不能对应多个
- 一共26个字母 如果用了25个 剩下一个自动对应
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
char a[10000],b[10000],c[10000],u[1000];
int fa[100000],fb[10000],sa,sb;
char ans[100000];
int l,lc,p=0,m[10000];
void pr() {
for(int i=0;i<=l-1;i++) {
if(fa[a[i]]==0)sa++;
fa[a[i]]=1;
if(fb[b[i]]==0)sb++;
fb[b[i]]=1;
}
}
void work1() {
char pa,pb;
for(char i='a';i<='z';i++) {
if(fa[i]==0) pa=i;
if(fb[i]==0) pb=i;
}
m[pb]=pa;
}
int main() {
freopen("enc.in","r",stdin);
freopen("enc.out","w",stdout);
cin>>a;
cin>>b;l=strlen(b);
cin>>c;lc=strlen(c);
pr();
if(sa!=sb) {
cout<<"ERROR";
return 0;
}
for(int i=0;i<=l-1;i++) {
if(m[b[i]]!=0&&m[b[i]]!=a[i]) {
cout<<"ERROR";
return 0;
}
else
m[b[i]]=a[i];
}
if(sb==25) work1();
for(int i=0;i<=lc-1;i++)
if(m[c[i]]==0) {
cout<<"ERROR";
return 0;
}
for(int i=0;i<=lc-1;i++) cout<<(char)m[c[i]];
fclose(stdin);
fclose(stdout);
return 0;
}
序
稍加分析 发现最长上升子序列
附https://www.cnblogs.com/wxjor/p/5524447.html
戏
找三元环
深搜一下~