Poj 2159 / OpenJudge 2159 Ancient Cipher
1.链接地址:
http://poj.org/problem?id=2159
http://bailian.openjudge.cn/practice/2159
2.题目:
Ancient Cipher
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28064 Accepted: 9195 Description
Ancient Roman empire had a strong government system with various departments, including a secret service department. Important documents were sent between provinces and the capital in encrypted form to prevent eavesdropping. The most popular ciphers in those times were so called substitution cipher and permutation cipher.
Substitution cipher changes all occurrences of each letter to some
other letter. Substitutes for all letters must be different. For some
letters substitute letter may coincide with the original letter. For
example, applying substitution cipher that changes all letters from 'A'
to 'Y' to the next ones in the alphabet, and changes 'Z' to 'A', to the
message "VICTORIOUS" one gets the message "WJDUPSJPVT".
Permutation cipher applies some permutation to the letters of the
message. For example, applying the permutation <2, 1, 5, 4, 3, 7, 6,
10, 9, 8> to the message "VICTORIOUS" one gets the message
"IVOTCIRSUO".
It was quickly noticed that being applied separately, both
substitution cipher and permutation cipher were rather weak. But when
being combined, they were strong enough for those times. Thus, the most
important messages were first encrypted using substitution cipher, and
then the result was encrypted using permutation cipher. Encrypting the
message "VICTORIOUS" with the combination of the ciphers described above
one gets the message "JWPUDJSTVP".
Archeologists have recently found the message engraved on a stone
plate. At the first glance it seemed completely meaningless, so it was
suggested that the message was encrypted with some substitution and
permutation ciphers. They have conjectured the possible text of the
original message that was encrypted, and now they want to check their
conjecture. They need a computer program to do it, so you have to write
one.Input
Input
contains two lines. The first line contains the message engraved on the
plate. Before encrypting, all spaces and punctuation marks were removed,
so the encrypted message contains only capital letters of the English
alphabet. The second line contains the original message that is
conjectured to be encrypted in the message on the first line. It also
contains only capital letters of the English alphabet.
The lengths of both lines of the input are equal and do not exceed 100.Output
Output
"YES" if the message on the first line of the input file could be the
result of encrypting the message on the second line, or "NO" in the
other case.Sample Input
JWPUDJSTVP
VICTORIOUSSample Output
YESSource
3.思路:
4.代码:
#include "stdio.h"
//#include "stdlib.h"
#define N 26
int b[][N];
int Partition(int a[],int p,int r)
{
int tmp = a[p];
while(p<r)
{
while(p<r && a[r]>=tmp) r--;
a[p]=a[r];
while(p<r && a[p]<=tmp) p++;
a[r]=a[p];
}
a[p]=tmp;
return p;
}
void qsort(int a[],int p,int r)
{
int q=;
if(p<r)
{
q=Partition(a,p,r);
qsort(a,p,q-);
qsort(a,q+,r);
}
}
int main()
{
int i,j;
char ch;
for(i=;i<;i++)
{
while((ch=getchar())!='\n') b[i][ch-'A']++;
qsort(b[i],,N-);
}
//for(i=0;i<N;i++) printf("%d ",b[0][i]);
//for(i=0;i<N;i++) printf("%d ",b[1][i]);
for(i=;i<N;i++) if(b[][i]!=b[][i]) break;
if(i>=N) printf("YES\n");
else printf("NO\n");
//system("pause");
return ;
}
Poj 2159 / OpenJudge 2159 Ancient Cipher的更多相关文章
- poj 2159 D - Ancient Cipher 文件加密
Ancient Cipher Description Ancient Roman empire had a strong government system with various departme ...
- 2159 -- Ancient Cipher
Ancient Cipher Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 36074 Accepted: 11765 ...
- POJ2159 ancient cipher - 思维题
2017-08-31 20:11:39 writer:pprp 一开始说好这个是个水题,就按照水题的想法来看,唉~ 最后还是懵逼了,感觉太复杂了,一开始想要排序两串字符,然后移动之类的,但是看了看 好 ...
- uva--1339 - Ancient Cipher(模拟水体系列)
1339 - Ancient Cipher Ancient Roman empire had a strong government system with various departments, ...
- UVa 1339 Ancient Cipher --- 水题
UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要, ...
- UVa1399.Ancient Cipher
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Ancient Cipher UVa1339
这题就真的想刘汝佳说的那样,真的需要想象力,一开始还不明白一一映射是什么意思,到底是有顺序的映射?还是没顺序的映射? 答案是没顺序的映射,只要与26个字母一一映射就行 下面给出代码 //Uva1339 ...
- POJ2159 Ancient Cipher
POJ2159 Ancient Cipher Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 38430 Accepted ...
- POJ 2159 Ancient Cipher 难度:0
题目链接:http://poj.org/problem?id=2159 #include <cstring> #include <cstdio> #include <cc ...
随机推荐
- HBase在京东的完善与创新
随着大数据处理时代的到来,NoSQL风生水起.京东作为国内最大的综合网络零售商,随着业务数据量爆发式增长,传统的关系数据库在海量数据面前开始显得捉襟见肘,于是京东云平台在Hadoop生态集群经验积累的 ...
- metasploit(MSF)终端命令大全
show exploits 列出metasploit框架中的所有渗透攻击模块. show payloads 列出metasploit框架中的所有攻击载荷. show auxiliary 列 ...
- win7(64bit)python相关环境模块搭建
包括Python,eclipse,jdk,pydev,pip,setuptools,beautifulsoup,pyyaml,nltk,mysqldb的下载安装配置. **************** ...
- Oracle读取和修改数据块的过程 专家
http://blog.itpub.net/18841027/viewspace-1649618/
- VBScript
VBScript then PrintWMIErrorthenExit Err.Description, Err.Number else ifnot boolCathiMode then wscrip ...
- C#_MVC 自定义AuthorizeAttribute实现权限管理
随笔- 28 文章- 31 评论- 16 MVC 自定义AuthorizeAttribute实现权限管理 在上一节中提到可以使用AuthorizeAttribute进行权限管理: [Autho ...
- C#_Wpf_DataContex上下文整个类绑定
<Window x:Class="UserStore.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2 ...
- 心跳之旅—💗—iOS用手机摄像头检测心率(PPG)
[前情提要] 光阴似箭,日月如梭,最近几年,支持心率检测的设备愈发常见了,大家都在各种测空气测雪碧的,如火如荼,于是我也来凑一凑热闹.[0]这段时间,我完成了一个基于iOS的心率检测Demo,只要稳定 ...
- JS常用正则(转)
作者:zxin出处:http://zxin.cnblogs.com/ 一.校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n ...
- Linux操作系统的简单认识
1:Linux操作系统的历史 Linux操作系统是由unix操作系统发展而来的,但是Unix是收费的系统,而Linux操作系统的免费的,开源的,所以使用比较广泛,但是它是基于命令行的,不提供图形化用户 ...