码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 1339 简单加密(encrypt)

时间:2015-01-22 11:06:37      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:uva   acm   c++   密码学   

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


UVa 1339 简单加密(encrypt)

标签:uva   acm   c++   密码学   

原文地址:http://blog.csdn.net/jibancanyang/article/details/43014899

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!