仔细读题并且对比样例可以发现,字母的替换和换元的规律是不同的,所以不能用模拟法将原来的字符串找到进行比对,所以要从替换换元前后的特点来看。

替换:

替换前后的两个字母集合可以看作是一个映射;

例如 HAHA ——> HEHE

字母H可以 对应E 也可以 对应H

可以看一下映射的定义:

简单来说,就是集合A中有两个H,那么集合B中也有两个H或A

HHEE中,各个字母的个数为2,2

HHAA中,各个字母的个数也为2,2

那么我们就可以说上述两个满足替换法。

换元:

通过替换法,不难发现,只要我们各个字母的个数对应相等就可以,通过题干我们可以明白,每个字母还要进行顺序打乱。

举个例子:

字符串A中的字母个数为 2,1,3,5;

字符串B中的字母个数为 1,2,5,3;

A和B满足替换关系,那么我们如何更好的去比较呢:用sort函数将每个字母的个数进行规范排序,然后每个比对。

题目中的换元是将字母重排,简单来说就是字母的顺序不重要,因此我们可以用sort函数将每个字母的个数进行规范排序,然后每个比对。

#include<bits/stdc++.h>
using namespace std;
int judge(string s, string t) {int ans1[26], ans2[26];memset(ans2, 0, sizeof(ans2));memset(ans1, 0, sizeof(ans1));int l = s.length();for (int i = 0; i < l; i++) {ans1[(int)(s[i] - 'A')]++;ans2[(int)(t[i] - 'A')]++;}sort(ans1, ans1 + 26);sort(ans2, ans2 + 26);for (int i = 0; i < 26; i++) {if (ans1[i] != ans2[i]) {cout << "NO" << endl;return 0;}}cout << "YES" << endl;return 0;}
int main() {string s, t;while (cin >> s >> t) {judge(s, t);}
}

(精讲)UVA - 1339 Ancient Cipher 刘汝佳紫书题单(算法竞赛入门经典)相关推荐

  1. UVA - 489 Hangman Judge 刘汝佳紫书题单(算法竞赛入门经典)

    思路很简单,题目中说猜对目标字母中的一个字母,就会将所有该字母的位置显现,因此,可以对目标字符进行筛选去重,然后对输入猜测的每个字母进行比对,由于不能猜已经猜过的字母,因此,要对成功猜出的目标字母进行 ...

  2. UVA - 1225 Digit Counting(刘汝佳紫书题单(算法竞赛入门经典 第二版 2014)

    个人感觉这道题有表述问题 他的题目表述说明测试数据中的数是不超过20的,但其实他的测试点中是有百位数的,所以按两位数去处理数据显然会造成数组越界. 代码如下 #include <bits/std ...

  3. 刘汝佳紫书 uva1592

    刘汝佳上传的代码没耐心看...就大致照着书上写的思路写了一个...一开始发现全写错了耗了半天... 定义一个pair,这个pair里有存两个队,字符串对和int对.每每读入一行的时候看看map中是否存 ...

  4. UVa 11062 Andy's Second Dictionary(刘汝佳紫书升级题)

    在介绍这道题之前,先介绍一下紫书里面和这道题很像的一道题: 紫书P112页 的例题5-3 安迪的第一个字典(Andy's First Dictionary UVa 10815) 原题链接如下: And ...

  5. AC自动机模板(摘自刘汝佳紫书,无指针)

    本题的题目选择的是 病毒侵袭持续中 HDU - 3065 const int size=5e4+5; const int SIGMA_SIZE=26; int trie[size][26],val[s ...

  6. 整理 刘汝佳紫书第三章习题代码 未完待续

    还有一会儿要去剑道社训练...就整理整理好了... 习题3-1 得分 UVA1585 代码: #include <iostream> using namespace std; int ma ...

  7. c语言 开灯问题,刘汝佳紫书[数组和字符串]内容总结

    本篇文章是笔者对紫书第3章--数组和字符串内容的一个整理,主要是基于问题的整理,总结并理顺了一下思路. 不得不说,这些题解真的是太巧妙了

  8. 刘汝佳《算法竞赛入门经典》---总结

    刘汝佳:<算法竞赛入门经典> 三步: 基本的数据结构+算法知识: 数论等数学基本知识: 锻炼联想建模能力.知识与实际相结合,解决实际问题! 第一章:程序设计入门 1.a/b 当a.b为整数 ...

  9. 刘汝佳《算法竞赛入门经典(第二版)》习题(三)

    刘汝佳<算法竞赛入门经典(第二版)>第三章习题(一) 习题3-1 得分(ACM/ICPC Seoul 2005,UVa1585) 给出一个由O和X组成的串(长度为1~80),统计得分.每个 ...

最新文章

  1. linux mysql 5.6.22_LinuxCentOS6.0下编译安装MySQL5.6.22
  2. c++ 全局变量初始化的一点总结
  3. 最好用的 IntelliJ 插件 Top 10
  4. Qt Creator管理工作区
  5. android 查看gpio状态_GPIO子系统重要概念
  6. 最近安装prestashop遇到莫名其妙的问题。突然毛瑟顿开了,create default language就出现错误...
  7. ECMAScript 2015(ES6)规范中的promise
  8. 本地无法启动MySQL服务,报的错误:1067,进程意外终止---解决
  9. Abp商业版 - Identity Server模块
  10. 共阴极数码管编码表_数码管循环点亮的PLC控制——基本逻辑指令的应用
  11. python中逻辑回归结果怎么看_python – 为什么statsmodels不能重现我的R逻辑回归结果?...
  12. Adaptive Feature Recombination and Recalibration for Semantic Segmentation: Application to Brain Tum
  13. android之sqlite增、删、改,查
  14. 【渝粤教育】国家开放大学2018年秋季 0690-22T化工原理及实验 参考试题
  15. 【元胞自动机】基于matlab元胞自动机单边教室疏散【含Matlab源码 1207期】
  16. 短信API接口组团出战,加速企业转型升级
  17. MATLAB之黄金分割法求极值
  18. word文档中标题跳到表格的下方-解决方法
  19. PreTranslateMessage(MSG* pMsg)专题
  20. Unity获取麦克风实现吹气球效果

热门文章

  1. ViewPager嵌套ViewPager,内层ViewPager
  2. quartz 参数说明
  3. 各大有名库的介绍(转)
  4. 如何培养自己的编程兴趣
  5. 【关于python中整除与取余】
  6. 南京中兴软创,南京焦点科技
  7. 【Python相关】PyCharm如何修改行注释颜色
  8. Win 10 系统下搭建 Python 编程环境,有手就行
  9. wrcoef2函数_matlab中二维小波变换部分函数
  10. FusionCharts的基本使用(3)