UVA 401 Palindromes 题解

2023-10-28

  Palindromes 

A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome because it is the same when the string is read from left to right as when the string is read from right to left.


A mirrored string is a string for which when each of the elements of the string is changed to its reverse (if it has a reverse) and the string is read backwards the result is the same as the original string. For example, the string "3AIAE" is a mirrored string because "A" and "I" are their own reverses, and "3" and "E"are each others' reverses.


A mirrored palindrome is a string that meets the criteria of a regular palindrome and the criteria of a mirrored string. The string "ATOYOTA" is a mirrored palindrome because if the string is read backwards, the string is the same as the original and because if each of the characters is replaced by its reverse and the result is read backwards, the result is the same as the original string. Of course, "A""T""O", and "Y"are all their own reverses.


A list of all valid characters and their reverses is as follows.


Character Reverse Character Reverse Character Reverse
A A M M Y Y
B   N   Z 5
C   O O 1 1
D   P   2 S
E 3 Q   3 E
F   R   4  
G   S 2 5 Z
H H T T 6  
I I U U 7  
J L V V 8 8
K   W W 9  
L J X X    


Note that O (zero) and 0 (the letter) are considered the same character and therefore ONLY the letter "0" is a valid character.

Input 

Input consists of strings (one per line) each of which will consist of one to twenty valid characters. There will be no invalid characters in any of the strings. Your program should read to the end of file.

Output 

For each input string, you should print the string starting in column 1 immediately followed by exactly one of the following strings.


STRING CRITERIA
" -- is not a palindrome." if the string is not a palindrome and is not a mirrored string
" -- is a regular palindrome." if the string is a palindrome and is not a mirrored string
" -- is a mirrored string." if the string is not a palindrome and is a mirrored string
" -- is a mirrored palindrome." if the string is a palindrome and is a mirrored string

Note that the output line is to include the -'s and spacing exactly as shown in the table above and demonstrated in the Sample Output below.

In addition, after each output line, you must print an empty line.

Sample Input 

NOTAPALINDROME 
ISAPALINILAPASI 
2A3MEAS 
ATOYOTA

Sample Output 

NOTAPALINDROME -- is not a palindrome.
 
ISAPALINILAPASI -- is a regular palindrome.
 
2A3MEAS -- is a mirrored string.
 
ATOYOTA -- is a mirrored palindrome.


题目大意:给你一个字符串判断是不是对称串,是不是镜像串。对称串我就不解释了,镜像串就是根据题目中的表,变换后是对称的字符串 比如 ‘2’跟‘S’是镜像则字符串"2S"就是镜像串。输出我也不解释了。睡觉了==。


题目是挺水的,我人也挺水的。改了这里错了,少了那里,==.前面一直写不对,重写了一份然后把前面的改对了所以有两份AC代码。其实差不多。


#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
#define MAXN 256
#define MAXM 30
char Rev[MAXN];
char str[MAXM];
bool rp,ms;

bool isregular(){
	int l = strlen(str);
	for(int i = 0;i < l/2;i++){
		if (str[i] != str[l-1-i])
			return false;
	}
	return true;
}

bool ismirror(){
	int l = strlen(str);
	for(int i = 0;i < (l+1)/2;i++){
		if (str[l-i-1] != Rev[str[i]])
			return false;
	}
	return true;
}

void changeZerotoO(){
	int l = strlen(str);
	for(int i = 0;i < l;i++){
		if (str[i] == '0')
			str[i] = 'O';
	}
}
int main(){
    //freopen("in.txt","r",stdin);
	memset(Rev,0,sizeof(Rev));
	Rev['A'] = 'A';
	Rev['E'] = '3';
	Rev['H'] = 'H';
	Rev['I'] = 'I';
	Rev['J'] = 'L';
	Rev['L'] = 'J';
	Rev['M'] = 'M';
	Rev['O'] = 'O';
	Rev['S'] = '2';
	Rev['T'] = 'T';
	Rev['U'] = 'U';
	Rev['V'] = 'V';
	Rev['W'] = 'W';
	Rev['X'] = 'X';
	Rev['Y'] = 'Y';
	Rev['Z'] = '5';
	Rev['1'] = '1';
	Rev['2'] = 'S';
	Rev['3'] = 'E';
	Rev['5'] = 'Z';
	Rev['8'] = '8';
	while(scanf("%s",str)!=EOF){
		changeZerotoO();
		rp = isregular();
		ms = ismirror();
		printf("%s -- is ",str);
		if (rp && ms){
			printf("a mirrored palindrome.\n");
		}
		else if (rp && !ms){
			printf("a regular palindrome.\n");
		}
		else if (!rp && ms){
			printf("a mirrored string.\n");
		}
		else{
			printf("not a palindrome.\n");
		}
		printf("\n");
	}
	return 0;
}

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#define MAXN 300
char Rev[MAXN];
char str[MAXN];
using namespace std;
bool ispali(){
	int l = strlen(str);
	for(int i = 0;i < l/2;i++){
		if (str[i] != str[l-i-1])
			return false;
	}
	return true;
}

bool ismir(){
	int l = strlen(str);
	for(int i = 0;i < (l+1)/2;i++){
		if (str[i] != Rev[str[l-i-1]])
			return false;
	}
	return true;
}


void changeZerotoO(){
	int l = strlen(str);
	for(int i = 0;i < l;i++){
		if (str[i] == '0')
			str[i] = 'O';
	}
}

int main(){
	//freopen("in.txt","r",stdin);
	memset(Rev,0,sizeof(Rev));
	Rev['A'] = 'A';	Rev['E'] = '3';	Rev['H'] = 'H';
	Rev['I'] = 'I';	Rev['J'] = 'L';	Rev['L'] = 'J';
	Rev['M'] = 'M';	Rev['O'] = 'O';	Rev['S'] = '2';
	Rev['T'] = 'T';	Rev['U'] = 'U';	Rev['V'] = 'V';
	Rev['W'] = 'W'; Rev['X'] = 'X';	Rev['Y'] = 'Y';
	Rev['Z'] = '5';	Rev['1'] = '1'; Rev['2'] = 'S';
	Rev['3'] = 'E';	Rev['5'] = 'Z'; Rev['8'] = '8';
	while(scanf("%s",str)!=EOF){
		changeZerotoO();
		bool pa = ispali();
		bool mr = ismir();
		printf("%s -- is ",str);
		if (pa && mr){
			printf("a mirrored palindrome.\n");
		}
		else if (!pa && mr){
			printf("a mirrored string.\n");
		}
		else if (pa && !mr){
			printf("a regular palindrome.\n");
		}
		else{
			printf("not a palindrome.\n");
		}
		printf("\n");
	}
	return 0;
}





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UVA 401 Palindromes 题解 的相关文章

  • UVA-810 筛子难题 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 题目并不算难 但是有一些需要注意的事情 1 骰子样式是确定的 而且题目中的图示正确的 2 根据骰子的两个相邻的面 例如题目给出的正
  • uva 1601 The Morning after Halloween

    题目 The Morning after Halloween 题意 有n个用小写字母表示的鬼和一张地图 每个鬼都要移动到对应的大写字母 两个鬼的位置不能在一次移动中交换 问最少步数 思路 bfs 1 先将地图用图的方法表示 即在每一个空白
  • 【PAT (Basic Level) Practice】(天梯赛)1027 打印沙漏(20分)(递归法)

    PAT Basic Level Practice 天梯赛 1027 打印沙漏 20分 递归法 题目 题目链接 1027 打印沙漏 20 分 本题要求你写个程序把给定的符号打印成沙漏的形状 例如给定17个 要求按下列格式打印 所谓 沙漏形状
  • HDU-2061 汉诺塔III (简单DP)

    约19世纪末 在欧州的商店中出售一种智力玩具 在一块铜板上有三根杆 最左边的杆上自上而下 由小到大顺序串着由64个圆盘构成的塔 目的是将最左边杆上的盘全部移到右边的杆上 条件是一次只能移动一个盘 且不允许大盘放在小盘的上面 现在我们改变游戏
  • 【CLYZ集训】马可波罗【按位】【博弈论】

    题目大意 有两个人 n n n堆石子 每个人轮流取 每次可以取1 x x x个 最后没得取的人输 两人都采取最优策略 问对于 x
  • [剑指offer] JAVA版题解(完整版)

    本文首发于我的个人博客 尾尾部落 序号 题解 牛客 OJ 数据结构类型 03 剑指offer 二维数组中的查找 二维数组中的查找 数组 04 剑指offer 替换空格 替换空格 字符串 05 剑指offer 从尾到头打印链表 从尾到头打印链
  • 蓝桥杯省赛C++A组B组题解整理(第十、九、八、七、六、五、四、三届)

    写在前面的话19 03 24 从第八届蓝桥杯到第十届蓝桥杯 我也是参加了三届蓝桥杯的老学姐啦 更不更新第十届的题解取决于网上有没有流出题目 但是第十届之后的题解将不会再更新了 下面的这些真题大多是我在大一的时候刷的 在大二的时候整理的 在大
  • UVa 120 Stacks of Flapjacks

    Background Stacks and Queues are often considered the bread and butter of data structures and find use in architecture p
  • linux--shell错误:syntax error near unexpected token ‘('

    这几天编写了几个简单的shell程序 然后都出现了syntax error near unexpected token 的错误 然后实在是检查不出错误 后面百度了才找到的原因 之前错误的程序片段如下 usr whoami dr pwd 提示
  • 梦之光芒Monyer (全关解析)

    目录 前言 第0关 描述 过程 第1关 描述 过程 第2关 描述 过程 第3关 描述 过程 第4关 描述 过程 第5关 描述 过程 第6关 描述 过程 第7关 描述 过程 第8关 描述 过程 第9关 描述 过程 第10关 描述 过程 第11
  • AT3590 Inserting ‘x‘ 题解

    本题是一道双指针的模拟题 题意 给你一个字符串 s s s 你可以在 s s s 的任意位置插入 x x
  • 算法设计与分析-DP习题

    7 1 最小路径和 给定一个m行n列的矩阵 从左上角开始每次只能向右或者向下移动 最后到达右下角的位置 路径上的所有数字累加起来作为这条路径的和 求矩阵的最小路径和 输入格式 输入第一行 两个正整数m和n 1 lt m n lt 1000
  • LeetCode—200.岛屿数量(Number of Islands)——分析及代码(C++)

    LeetCode 200 岛屿数量 Number of Islands 分析及代码 C 一 题目 二 分析及代码 1 深度优先搜索 1 思路 2 代码 3 结果 三 其他 一 题目 给定一个由 1 陆地 和 0 水 组成的的二维网格 计算岛
  • Uva 10474 Where is the Marble?(排序与检索)

    本题若掌握了sort 和lower bound 两个函数 就无难点 include
  • UVa 11464 Even Parity 题解

    这是一道白书17页的题目 题目大意 输入一个n n的01矩阵 1
  • 【团体程序设计天梯赛-练习集】L2-009 抢红包(25分)

    团体程序设计天梯赛 练习集 L2 009 抢红包 25分 题目 题目链接 L2 009 抢红包 25 分 没有人没抢过红包吧 这里给出N个人之间互相发红包 抢红包的记录 请你统计一下他们抢红包的收获 输入格式 输入第一行给出一个正整数N 1
  • 2011年北京大学计算机研究生机试真题(题解)

    九度OJ题目传送门 2011年北京大学计算机研究生机试真题 鸡兔同笼 题目描述 一个笼子里面关了鸡和兔子 鸡有2只脚 兔子有4只脚 没有例外 已经知道了笼子里面脚的总数a 问笼子里面至少有多少只动物 至多有多少只动物 输入 第1行是测试数据
  • 2020年团体程序设计天梯赛-总决赛 L2-2 口罩发放

    L2 2 口罩发放 25分 输入格式 输出格式 输入样例 输出样例 样例解释 题解 L2 2 口罩发放 25分 为了抗击来势汹汹的 COVID19 新型冠状病毒 全国各地均启动了各项措施控制疫情发展 其中一个重要的环节是口罩的发放 某市出于
  • 《数据结构与算法》期末考试

    数据结构与算法 期末考试 判断题 单选题 填空题 函数题 主观题 判断题 已知一棵二叉树的先序遍历结果是ABC 则CAB不可能是中序遍历结果 T 所谓 循环队列 是指用单向循环链表或者循环数组表示的队列 F 只有当局部最优跟全局最优解一致的
  • P1609 最小回文数 题解

    本题位数较大 所以只能使用字符串读入 因为是回文数 所以我们只考虑前半部分的情况就能确定一个回文数 如一个型为 x y z overline xyz xy

随机推荐

  • 基于Redis的ASP.NET与js(AJAX)的聊天程序

    首先是安装Redis 此处略过n步 然后 新建一个ASP NET的MVC2的工程 MvcMessage 需要下载ServiceStack Redis并把dll复制到工程下 并正确引用 好 下面开始贴代码了 1 在工程目录 Models 下新
  • vue中scss的使用

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 SCSS CSS书写代码规模较大的Web应用时 容易造成选择器 层叠的复杂度过高
  • pads图标logo库制作方法

    pads官方推出了一款BMP to ASC的图片转换软件 用于将bmp文件转换成asc文件格式 但在实测中发现软件安装不了 我通过网上查找 整理了以下方法来制作图标库 1 准备工作 首先电脑里下载安装PS WinTopo Pro exe软件
  • Java InputStream流转换读取成String字符串方法及示例代码

    本文主要介绍Java中 将InputStream输入流转换读取成String字符串的几种方法 以及相关的示例代码 原文地址 Java InputStream流转换读取成String字符串方法及示例代码
  • MongoDB限制内存方法

    1 创建控制组 确保cgroups binaries被安装 cgcreate g memory MongoLimitGroup 如果报错cgcreate libcgroup initialization failed Cgroup is n
  • 数据量占总表的百分比过大导致索引失效

    数据量占总表的百分比过大导致索引失效 最近在做报表查询时 使用关键字explain对sql解释发现 在条件不变的情况下对索引列的条件不一样会导致索引失效 使用强制索引的情况下问题解决 建表语句 CREATE TABLE hm bs rec
  • AOP+自定义注解实现redis缓存自动更新

    1 前言 在前台查询首页数据的方法上加了注解 Cacheable value courseAndTeacher key selectIndexList 另外还有两个注解是用在更新缓存 本来只要这几个注解配合起来使用就能实现数据自动更新 但是
  • 软考-安全

    安全领域的重要性 随着科技进步 社会发展 尤其是以计算机为代表的信息技术飞速发展 各种信息呈爆炸式 发展 计算机及信息技术的应用领域在不断扩展 计算机在政府 企业 民生等各个领域中 都得到越来越广泛的应用 与此同时 网络攻击和入侵事件与日俱
  • QMap的遍历

    QMap
  • 大数据技术之-presto

    一 Presto简介 1 Presto概念 Presto是一个开源的分布式SQL查询引擎 适用于交互式分析查询 数据量支持GB到PB字节 Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的
  • c语言旋转bmp图片程序,C语言实现BMP图像处理(任意角度旋转)

    原理参考 https blog csdn net liyuan02 article details 6750828 实现对对任意角度的旋转 具体数学推导网上找 如果各位读者需要使用 只需要将打开文件的位置改为你的位置 输入不同的角度即可 i
  • PyQt5组件之QSpinBox

    QSpinBox 简介 QSPINBox是一个计数器控件 允许用户选择一个整数值通过单击向上向下或者按键盘上的上下键来增加减少当前显示的值 当然用户也可以输入值在默认情况下 QSpinBox的取值范围是 0 99 每次改变的步长是1 QSp
  • 论文解读:PRINCE: Prefix-Masked Decoding for Knowledge Enhanced Sequence-to-Sequence Pre-Training

    论文解读 PRINCE Prefix Masked Decoding for Knowledge Enhanced Sequence to Sequence Pre Training Paper https aclanthology org
  • java1.7 0 45_Ubuntu下安装jdk1.7.0_45

    Ubuntu上安装jdk的 tar gz包 首先将 tar gz解压 具体方法为 tar xzvf tar gz 下面以我自己的安装版本 jdk1 7 0 45 为例 1 解压安装文件 tar xzvf jdk 7u45 linux x64
  • tensorflow不同版本对应的Python 版本,cuDNN版本,CUDA版本

    welcome to my blog 原图地址 Linux下的对应版本 macOS下的对应版本
  • MATLAB实现周期信号的傅里叶级数的展开

    MATLAB小白 不足之处还请多指教 设周期函数的波形为 求该周期信号的傅里叶级数展开式 并画出傅里叶展开后的波形 我们通过信号与系统的学习可以知道 周期函数可以通过一系列的三角函数的线性组合来逼近 如下图所示 首先我们可以通过三角函数的正
  • Mac下选择适合Unity的IDE

    以前都是Windows下使用Unity的 配合强大的visualstudio 写起代码来简直不要太爽 当我切换到Mac平台后 就感觉写代码的感受一下子回到了解放前 目前我尝试以下几种解决方案 终于让我写代码 1 vistualstudio
  • java.net.UnknownHostException完美解决。

    生产者会向Eureka注册 生产者如果部署在本机上 只需要部署以下参数即可 eureka instance instance id thisiswsgs01 设置服务描述 消费者只需要通过 http thisiswsgs01 user 1即
  • pubmed 影响因子_如何在Pubmed利用影响因子筛选文献?

    前几天给大家介绍了Pubmed上的2个神器 不知道的同学可以返回去看原文 两大神器 让你的PubMed飞起来 直接显示影响因子 Sci Hub链接 分区 用完之后是不是觉得方便了许多 今天 再给大家介绍一个使用Pubmed时候的小窍门 在P
  • UVA 401 Palindromes 题解

    Palindromes A regular palindrome is a string of numbers or letters that is the same forward as backward For example the