背景: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