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 ...
随机推荐
- CentOS 下SSH无密码登录的配置
CentOS 下SSH无密码登录的配置 最近学习Hadoop.它要求各节点之间通过SSH无密码登录,配置SSH的时候费了一番功夫,记录下来,以备忘. 配置SSH无密码登录需要3步: 1.生成公钥和私钥 ...
- btrace拓展工具-java应用性能诊断优化利器
Btrace是一个实时监控工具,可以无需修改应用代码(事实上它修改了字节码),来达到不可告人的秘密!这是性能调优和诊断的利器! 它可以获取应用程序代码的执行时间,他可以让你无需修改代码,帮你做时间的打 ...
- 今天写一些 有关iOS 多图片组合 成一张图片的问题。保持原像素不变
1.要求:服务器给一张图片模板,要在模版上镂空,然后添加一些别的图片,然后组合成一张图,这个模版的像素 不是固定的,有可能比 当前手机屏幕大.所以,在组合截图的时候,有一定的要求. 贴代码: /** ...
- Mac OS X 10.10优胜美地怎样完美接管iphone上的电话和短信
自从今年苹果第一次的公布会上毛猫就特别注意这个功能.感觉特别Cool,特别方便.但直到今天毛猫才第一次成功測试出这个功能呀.尽管handoff功能还未測出来,可是认为在mac上发短信和打电话也已经足够 ...
- POJ 3080 Blue Jeans (KMP)
求出公共子序列 要求最长 字典序最小 枚举第一串的所有子串 然后对每一个串做KMP.找到目标子串 学会了 strncpy函数的使用 我已可入灵魂 #include <iostre ...
- 【转】Oracle 10g RAC TAF
本人转自:http://www.cnblogs.com/future2012lg/archive/2013/10/12/3365978.html Oracle RAC 同一时候具备HA(High Av ...
- Spring MVC page render时jsp中元素相对路径的解决办法
前段时间做了用Spring Security实现的登录和访问权限控制的功能,但是page render使用的是InternalResourceResolver,即在spring的servlet配置文件 ...
- android124 zhihuibeijing 新闻中心-新闻 -北京页签 下拉刷新
缓存工具类:以url为key,json数据为value, package com.itheima.zhbj52.utils; import com.itheima.zhbj52.global.Glob ...
- [面试算法题重做]求1+2+...+n
题目:求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 不能用条件语句,基本上只有考虑递归. 常规解法: 利用构 ...
- 四、Socket之UDP异步传输文件-用控件显示文件传输进度
上一篇文章三.Socket之UDP异步传输文件中,实现了多文件的传输和MD5校验,还显示了文件传输过程中的信息,在这一篇文章中,将介绍怎样实现传输文件的进度显示和实现选择保存文件路径. 首先,来实现一 ...