uva 1339 Ancient Cipher
大意:
读入两个字符串(都是大写字母),字符串中字母的顺序可以随便排列。
现在希望有一种字母到字母的一一映射,从而使得一个字符串可以转换成另一个字符串(字母可以随便排列)
有,输出YES;否,输出NO;
exp:
输入
HAHA
HEHE
输出
YES
可以将A→E,或E→A;
关键在于,问题简化:
因为不用考虑字母位置,所以可以分别统计两个字符串中不同字母出现次数,计入数组counts1和counts2。
那么,怎么知道谁和谁对应呢?
这里面有个隐含条件:如果A→B,那么A在1数组出现的次数和B在2数组中出现的次数一定是一样的!
或者说,如果A出现的频率是30%,那么B也是30%。
即二者的地位是相同的。
所以,通过sort将counts1和counts2排序,并相互比较;如果二者一模一样,那就可以直接在对应字母间建立映射关系;否则,一定没法对应。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxl=;
const int maxalpa=;
char sup[maxl];
char sub[maxl];
int counts1[maxalpa],counts2[maxalpa];
int l; int main()
{
while(scanf("%s%s",sup,sub)!=EOF)
{
memset(counts1,,sizeof(counts1));
memset(counts2,,sizeof(counts2)); l=strlen(sup);
for(int i=;i<l;i++)
{
counts1[sup[i]-'A']++;
counts2[sub[i]-'A']++;
}
sort(counts1,counts1+);
sort(counts2,counts2+);
if(!memcmp(counts1,counts2,sizeof(counts1)))
printf("YES\n");
else
printf("NO\n"); memset(sup,,sizeof(sup));
memset(sub,,sizeof(sub));
}
return ;
}
uva 1339 Ancient Cipher的更多相关文章
- 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& ...
- uva--1339 - Ancient Cipher(模拟水体系列)
1339 - Ancient Cipher Ancient Roman empire had a strong government system with various departments, ...
- Poj 2159 / OpenJudge 2159 Ancient Cipher
1.链接地址: http://poj.org/problem?id=2159 http://bailian.openjudge.cn/practice/2159 2.题目: Ancient Ciphe ...
- Ancient Cipher UVa1339
这题就真的想刘汝佳说的那样,真的需要想象力,一开始还不明白一一映射是什么意思,到底是有顺序的映射?还是没顺序的映射? 答案是没顺序的映射,只要与26个字母一一映射就行 下面给出代码 //Uva1339 ...
- poj 2159 D - Ancient Cipher 文件加密
Ancient Cipher Description Ancient Roman empire had a strong government system with various departme ...
- POJ2159 Ancient Cipher
POJ2159 Ancient Cipher Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 38430 Accepted ...
- POJ2159 ancient cipher - 思维题
2017-08-31 20:11:39 writer:pprp 一开始说好这个是个水题,就按照水题的想法来看,唉~ 最后还是懵逼了,感觉太复杂了,一开始想要排序两串字符,然后移动之类的,但是看了看 好 ...
- 2159 -- Ancient Cipher
Ancient Cipher Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 36074 Accepted: 11765 ...
随机推荐
- avalon复杂绑定
样式操作:ms-css-样式名=“样式值”,ms-class ms-css-width="prop"(自动补px) ms-css-height="{{prop}}%&qu ...
- .Net环境下的缓存技术介绍
.Net环境下的缓存技术介绍 摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 1.1 ...
- MVC文章汇总
http://www.cnblogs.com/yaozhenfa/category/541420.html http://www.cnblogs.com/yubaolee/p/3269043.html ...
- mySQL数据库Sql语句执行效率检查--Explain命令
mysql性能的检查和调优方法 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的 ...
- Eclipse 实现关键字自动补全功能
一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的, ...
- sql server 查询表结构
--查询表结构start SELECT 序号 = a.colorder,字段名称 = a.name,字段描述 = f.value, 标识 then '√' else '' end, 主键 FROM s ...
- [SoapUI] 在SoapUI里获取Excel中多行数据并存入List
ArrayList<ArrayList<String>> getCellValuesH( String filePath, String sheetName,int tr1,i ...
- Writing in Science
学习如何撰写科学论文 一.网站学习:https://www.youtube.com/watch?v=PPsocEFCGRU&list=PLUk4uy2jPpXVGXqVhgs352q6jOdI ...
- javascript 之 prototype 浅析
prototype 原型 javascript 是一种 prototype based programming 的语言, 而与我们通常的 class based programming 有很大 的区别 ...
- JSON API免费接口
来自:http://www.bejson.com/knownjson/webInterface/ 电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuId ...