Ancient Cipher UVA - 1339
问题描述
代码注释
// P73 算法竞赛入门经典
/*
Dreams never shine!
It's you that shine while chasing your dreams :)
JAYO!!
*/
#include <cstdio>
#include <cstring> // strlen
#include <cstdlib> // qsort
int cmp(const void *a, const void *b) {
return *(int *)a < *(int *)b;
}
int main() {
char s1[200], s2[200];
while(scanf("%s%s", s1, s2) == 2) {
int n = strlen(s1);
int cnt1[26] = {0}, cnt2[26] = {0};
for(int i = 0; i < n; i++) cnt1[s1[i] - 'A']++; // 这26项中有可能含有0(有的字母没出现)
for(int i = 0; i < n; i++) cnt2[s2[i] - 'A']++;
qsort(cnt1, 26, sizeof(int), cmp); //
qsort(cnt2, 26, sizeof(int), cmp);
int ok = 1;
for(int i = 0; i < 26; i++) {
if(cnt1[i] != cnt2[i]) {
ok = 0;
break;
}
}
if(ok) printf("YES\n");
else printf("NO\n");
}
return 0;
}
知识点
C标准库函数qsort()
函数原型void qsort(void *base,int nelem,
int width,int (*fcmp)(const void *,const void * ))
实例
int cmp(const void *a ,const void *b)
{
return *(int *)a - *(int *)b ; //从小到大排序,不能写成 return a < b 这种形式
}
总结
对于不懂的地方,自己写代码测试,学会做“代码实现”