背景:1Y,最简单的密码学!
思路:把每个字符串中每个字母的频数统计 出来,把频数相同的两个数映射就可,如果最后所有字母都有对应的映射,那么就是YES,permutation cipher不需要管。
学习:
1.C语言stdlib.h里的qsort函数原型:
void qsort(void * base,size_t num,size_t size,int (*comparator)(contst void *,const void * ); <pre name="code" class="cpp">//排序数组起始地址,排序元素个数,每个元素大小(如int为4),比较函数。比较函数的书写:
int cmp(const void *a,const void *b){ //传入void指针,但是运算的时候要强制转换为相应类型。
return *(int*)a-*(int*)b;//元素相等就返回0,大于就返回正数,小于就返回负数。
}#include<stdio.h>
#include<string.h>
int main(void){
char a[105],b[105];
while(scanf("%s %s",a,b)==2){
int alist[26],blist[26],n=strlen(a);
memset(alist,0,sizeof(alist));
memset(blist,0,sizeof(blist));
for(int i=0;i<n;i++){
alist[a[i]-'A']++;
blist[b[i]-'A']++;
}
for(int i=0;i<26;i++){
if(alist[i]){
for(int j=0;j<26;j++){
if(alist[i]==blist[j]){
n-=alist[i];
alist[i]=blist[j]=0;
break;
}
}
}
}
if(!n) printf("YES\n");
else printf("NO\n");
}
return 0;
}原文地址:http://blog.csdn.net/jibancanyang/article/details/43014899