UVa 1339 简单加密(encrypt)

来源:互联网 发布:mac唇膏专柜 编辑:程序博客网 时间:2024/03/28 19:49

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


0 0