POJ2159 Ancient Cipher

具体怎么替换和置换都不知道,所以只需要确保频率一样即可

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s1[105], s2[105];
int len, a[105], b[105];
int check1(char c)
{
    int res = 0;
    for(int i = 0; i < len; i++){
        if(s1[i] == c) res++;
    }
    return res;
}
int check2(char c)
{
    int res = 0;
    for(int i = 0; i < len; i++){
        if(s2[i] == c) res++;
    }
    return res;
}
void solve()
{
    for(int i = 0; i < len; i++) a[i] = check1(s1[i]);
    for(int i = 0; i < len; i++) b[i] = check2(s2[i]);
    sort(a,a+len); sort(b,b+len);
    int flag = 1;
    for(int i = 0; i < len; i++){
        if(a[i] != b[i]){
            flag = 0;
            break;
        }
    }
    if(flag) printf("YES\n");
    else printf("NO\n");
}
int main()
{
    scanf("%s",s1);
    scanf("%s",s2);
    len = strlen(s1);
    solve();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/kkjy_00/article/details/87923786