#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
#include <map>
#include <cctype>
using namespace std;
char p[]="the quick brown fox jumps over the lazy dog";
int plen;
char mmap[26];
struct E
{
char str[110];
} li[110];
bool check(char a[])
{
memset(mmap,'\0',sizeof(mmap));
// a----->p
for(int i=0; i<plen; i++)
{
//printf("index-->%d\n",a[i]-'a');
if(a[i]!=p[i]&&(p[i]==' '||a[i]==' '))
return false;
else if(a[i]==p[i]&&(p[i]==' '||a[i]==' '))
continue;
else if(mmap[a[i]-'a']=='\0')
mmap[a[i]-'a']=p[i];
else
{
if(mmap[a[i]-'a']!=p[i])
return false;
}
}
return true;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T=0;
plen=strlen(p);
char tmp[110];
while(gets(tmp))
{
int top=0;
int keyIndex=-1;
if(strcmp(tmp,"")==0)
break;
strcpy(li[top].str,tmp);
if(keyIndex==-1)
{
int len=strlen(tmp);
if(len==plen&&check(tmp))
keyIndex=top;
}
top++;
while(gets(tmp))
{
if(strcmp(tmp,"")==0)
break;
strcpy(li[top].str,tmp);
if(keyIndex==-1)
{
int len=strlen(tmp);
if(len==plen&&check(tmp))
keyIndex=top;
}
top++;
}
if(T!=0) printf("\n");
else T++;
if(keyIndex!=-1)
{
for(int i=0; i<top; i++)
{
int len=strlen(li[i].str);
for(int j=0; j<len; j++)
{
if(li[i].str[j]!=' ')
printf("%c",mmap[li[i].str[j]-'a']);
else
printf(" ");
}
printf("\n");
}
}
else
{
printf("No solution.\n");
}
}
return 0 ;
}
ZOJ 1838 Crypt Kicker II
最新推荐文章于 2021-09-25 21:46:46 发布