UVA 10008: What's Cryptanalysis?

Jasonlin posted @ 2011年3月28日 21:34 in UVA with tags 字符串 密码分析法 , 2768 阅读

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=12&problem=949&mosmsg=Submission+received+with+ID+8687449

题目大意:

      密码破解是一门艺术啊,现在要你分析一段密文,输出各个字母分别是多少个。

解题思路:

      统计一下,输出来就是啦,一些不熟悉的字符函数用用。

解题代码:

#include<iostream>
#include<string>
#include<cctype>
#include<algorithm>
using namespace std;
struct node{
	char c;
	int  v;
	node(){
		c='\0';
		v=0;
	}
}s[26];
bool cmp(node a,node b){
	if(a.v==b.v)
		return a.c<b.c;
	else
		return a.v>b.v;
}
int main(){
	int n;
	string cry;
	while(cin>>n){
		for(int i=0;i<=n;i++){
			getline(cin,cry);
			int len=cry.length();
			for(int j=0;j<len;j++)
				if(isalpha(cry[j])){
					char t=toupper(cry[j]);
					s[t-'A'].c=t;
					s[t-'A'].v++;
				}
		}
		sort(s,s+26,cmp);
		for(int i=0;i<26&&s[i].v!=0;i++){
			cout<<s[i].c<<' '<<s[i].v<<endl;
		}
	}
	return 0;
}

扩展知识:

http://blog.csdn.net/lin49940/archive/2010/04/27/5535700.aspx

http://en.wikipedia.org/wiki/Cryptanalysis

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter