UVa 1339 简单加密(encrypt)

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


你可能感兴趣的:(C++,ACM,密码学,uva)