POJ2159 Ancient Cipher
题目大意:字符串加密问题,采用字符替换和重新排列的综合方法加密。输入为加密串和字符串,不含空格的大写字母。
解题思路:两种加密方法在具体过程中应用并不唯一,即我们不知道具体的加密过程,所以只需统计出现字符的种类和不同种类次数,且排续后完全相同,则判定为加密字符串。
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXN 260
char strA[MAXN];
char strB[MAXN];
int cntA[MAXN];
int cntB[MAXN];
int main()
{
scanf("%s%s",strA,strB);
int len=strlen(strB);
for(int i=0;i<len;i++) cntA[strA[i]-'A']++;
for(int i=0;i<len;i++) cntB[strB[i]-'A']++;
sort(cntA,cntA+26);
sort(cntB,cntB+26);
bool ok=true;
for(int i=0;i<26;i++)
if(cntA[i]!=cntB[i])
{
ok=false;
break;
}
if(ok) printf("YES\n");
else printf("NO\n");
return 0;
}
还没有评论,来说两句吧...