原题网址:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4085
英文题意真心不好懂........
其实说的就是映射对应加密的方式,现在给出两组字符,让你查找是否可以找到一种映射方式,让两个字符串完成加密.....
因为不需要考虑字符对应的方式,那么直接统计字符出现的次数就可以了,比如
1 2 3 和 2 3 4 ,不同的数字有三种,每一种一个,不难找到对应的方式,但是如果是 1 2 3 和 4 4 5,那么就没办法进行一一映射了.............
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char x[1005],y[1005];
int a[26],b[26],len;
void fun(char ch[],int tg[])
{
for(int i=0;i<len;++i)//统计数量
{
++tg[ch[i]-'A'];
}
}
void slove()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
len=strlen(x);
fun(x,a);fun(y,b);
sort(a,a+26);sort(b,b+26);//排序
for(int i=0;i<26;++i)
{
if(a[i]!=b[i])//有不同的话
{
printf("NO\n");
return;
}
}
printf("YES\n");
}
int main()
{
//freopen("shuju.txt","r",stdin);
while(~scanf("%s%s",x,y))
{
slove();
}
return 0;
}