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
VICTORIOUS

Sample Output

YES

Source

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的更多相关文章

  1. poj 2159 D - Ancient Cipher 文件加密

    Ancient Cipher Description Ancient Roman empire had a strong government system with various departme ...

  2. 2159 -- Ancient Cipher

    Ancient Cipher Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 36074   Accepted: 11765 ...

  3. POJ2159 ancient cipher - 思维题

    2017-08-31 20:11:39 writer:pprp 一开始说好这个是个水题,就按照水题的想法来看,唉~ 最后还是懵逼了,感觉太复杂了,一开始想要排序两串字符,然后移动之类的,但是看了看 好 ...

  4. uva--1339 - Ancient Cipher(模拟水体系列)

    1339 - Ancient Cipher Ancient Roman empire had a strong government system with various departments, ...

  5. UVa 1339 Ancient Cipher --- 水题

    UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要, ...

  6. UVa1399.Ancient Cipher

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. Ancient Cipher UVa1339

    这题就真的想刘汝佳说的那样,真的需要想象力,一开始还不明白一一映射是什么意思,到底是有顺序的映射?还是没顺序的映射? 答案是没顺序的映射,只要与26个字母一一映射就行 下面给出代码 //Uva1339 ...

  8. POJ2159 Ancient Cipher

    POJ2159 Ancient Cipher Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38430   Accepted ...

  9. POJ 2159 Ancient Cipher 难度:0

    题目链接:http://poj.org/problem?id=2159 #include <cstring> #include <cstdio> #include <cc ...

随机推荐

  1. linux快速入门 1.1命令行操作

    http://lovesoo.org/linux-command-line-operation.html 1.1命令行操作 目录: <wp_nokeywordlink>Shell简介 &l ...

  2. Android设计模式系列--工厂方法模式

    工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式.android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具 ...

  3. dataGridView控件--未将对象引用设置添加到对象的实例

    上篇博客中我完成了如何将控件中的数据导出到excel中dataGridView控件--导出Excel,当我成功导出后,又再次遇到了新问题---未将对象引用设置添加到对象的实例 解决办法:  1 .将代 ...

  4. cocos2d-x 网格动画深入分析

    转自:http://www.2cto.com/kf/201212/179828.html 在TestCpp中的EffectsTest示例中展示了一些屏幕特效,它是将屏幕划分为多个格子,并对这些格子进行 ...

  5. android129 zhihuibeijing 聊天机器人

    上屏幕界面activity_main.xml: 语音识别界面 <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

  6. java_泛型 TreeSet 判断hashcode/length(升序排列)

    package ming; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; ...

  7. Android Studio无法启动 打开, Android Studio gradle下载不了

    Google在2013年I/O大会上发布了Android Studio,AndroidStudio是一个基于IntelliJ思想的新的Android开发工具.下面介绍一下Android Studio安 ...

  8. CSS内容

    选择器 框模型 背景和边框 文本效果 2D/3D 转换 动画 多列布局 用户界面 CSS3 边框 border-radius box-shadow border-image

  9. AngularJS中在前后端分离模式下实现权限控制 - 基于RBAC

    一:RBAC 百科解释: 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中,权限与角色相关联,用 ...

  10. javascript中substring和substr方法

    1.substring 方法 定义:用于提取字符串中介于两个指定下标之间的字符 语法:stringObject.substring(start,stop) 参数描述: start 必需.一个非负的整数 ...