题目地址 : 

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=342&mosmsg=Submission+received+with+ID+13517947

好久没有刷题了 感觉题目比较简单 锻炼思维的严谨性 看来刷题还是很有必要的

贴上源码

#include<iostream>
#include<fstream>
#include<cstring>
#include<string>
using namespace std;
//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
//判0与o的时候要注意哦;
char one[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
char two[] = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
char char_mirror[26]=
{
'A','*','*','*','3','*','*','H','I','L','*','J','M',
'*','O','*','*','R','2','T','U','V','W','X','Y','5'
};
char num_mirror[10]={'0','1','S','E','*','Z','*','*','8','*'};
int check_huiwen(char * str)
{
int len = strlen(str);
for (int i = 0; i < len/2; i++)
{
if (str[i] == '0' && str[len-i-1] == 'O' || str[i] == 'O' && str[len-i-1] == '0')
{
continue;
}
if (str[len-i-1] != str[i])
return -1;
}
return 0;
} int check_mirror(char * str)
{
int len = strlen(str);
for (int i = 0; i < len/2+1; i++)
{
if (isalpha(str[i]) && str[len-i-1] == char_mirror[str[i]-'A'] || isdigit(str[i]) && num_mirror[str[i]-'0'] == str[len-i-1])
{
continue;
}
else
{
if (str[i] == '0' && str[len - 1 - i] == 'O' || str[i] == 'O' && str[len - 1 - i] == '0')
continue;
return -1;
} }
return 0;
}
int main()
{
#ifndef ONLINE_JUDGE
fstream cin("D://code//acm//txt//4.txt");
#endif
char str[25];
while (cin>>str)
{
int is_huiwen = 0;
int is_mirror = 0;
if ( check_huiwen(str) == 0 )
{
is_huiwen = 1;
}
if ( check_mirror(str) == 0 )
{
is_mirror = 1;
}
if (is_huiwen && is_mirror )
{
cout<<str<<" -- is a mirrored palindrome."<<endl<<endl;
}
else if (is_huiwen && ! is_mirror)
{
cout<<str<<" -- is a regular palindrome."<<endl<<endl;
}
else if (is_mirror && ! is_huiwen)
{
cout<<str<<" -- is a mirrored string."<<endl<<endl;
}
else if (!is_huiwen && ! is_mirror)
{
cout<<str<<" -- is not a palindrome."<<endl<<endl;
} }
return 0;
}

这道题目不难却刷了很久

原因:

1.样例超过去之后 每一行都多复制了一些空格,以后注意

2.check_mirror函数for循环的终止条件i<len/2+1,中间点容易被忽视,这个也可以看作边界条件,以后注意

3.为什么会出现第二个问题呢 因为在写check_huiwen时 就写的 i<len/2 就顺手抄了过来 不多思考 两个问题还是不一样的  细节没把握好,以后参考以前的代码时一定注意边界条件

4.isdigit函数没有想到;

5.#ifndef ONLINE_JUDGE   #endif

6.

uva401 - Palindromes结题报告的更多相关文章

  1. 《基于Arm实验箱的国密算法应用》课程设计 结题报告

    <基于Arm实验箱的国密算法应用>课程设计 结题报告 小组成员姓名:20155206赵飞 20155220吴思其 20155234昝昕明 指导教师:娄嘉鹏 设计方案 题目要求:基于Arm实 ...

  2. 《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告

    <基于Cortex-M4的ucOS-III的应用>课程设计 结题报告 小组成员姓名:20155211 解雪莹 20155217 杨笛 20155227 辜彦霖 指导教师:娄嘉鹏 一.设计方 ...

  3. 2013山东省ICPC结题报告

    A.Rescue The Princess 已知一个等边三角形的两个顶点A.B,求第三个顶点C,A.B.C成逆时针方向. 常规的解题思路就是用已知的两个点列出x,y方程,但这样求出方程的解的表达式比较 ...

  4. [置顶] 白话最小边覆盖总结--附加 hdu1151结题报告

    刚开始看到这个题目的时候就觉得想法很明了,就是不知道如何去匹配... 去网上看了不少人的解题报告,但是对于刚接触“最小边覆盖”的我来说....还是很困难滴....于是自己又开始一如以往学习“最大独立集 ...

  5. hdu1281结题报告

    哎哎...自己刚刚一看到这个题目居然.....什么都想不到...看了一下别人的解题报告说最大匹配...于是就自己开始构思啦... 对于这个棋盘,有K个可以放棋子的位置....那么 首先我们开始可以求出 ...

  6. 有向图强连通分支的Tarjan算法讲解 + HDU 1269 连通图 Tarjan 结题报告

    题目很简单就拿着这道题简单说说 有向图强连通分支的Tarjan算法 有向图强连通分支的Tarjan算法伪代码如下:void Tarjan(u) {dfn[u]=low[u]=++index//进行DF ...

  7. 2016noipday1t1玩具迷题结题报告

    经常读这个代码有益于比赛时想起一些思路.... day1t1,洛谷dalao称之为水题...??然后我去年还是没拿到分,就这个,我还就写了40%的数据,AC到40,然而这不是关键,注释了freopen ...

  8. 2017 五一 清北学堂 Day1模拟考试结题报告

    预计分数:100+50+50 实际分数:5+50+100 =.= 多重背包 (backpack.cpp/c/pas) (1s/256M) 题目描述 提供一个背包,它最多能负载重量为W的物品. 现在给出 ...

  9. 结题报告:luogu P2014

    题目链接:P2014 选课 简单的树形\(dp\),借助\(dfs\)实现. 一般的树形\(dp\)数组是需要二维的,其中一维记录节点(编号或父/子节点的状态(有时三维)),另一维记录权值或计数. 重 ...

随机推荐

  1. Terrible Sets

    Terrible Sets Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3017   Accepted: 1561 Des ...

  2. Android(java)学习笔记108:通过反射获取私有构造方法并且使用

    反射获取私有构造方法并且使用: 1.获取字节码文件.class对象:          Class c = Class.forName("cn.itcast_01.Person") ...

  3. hello world of hibernate Annotation

    1:建立所需要的类,如: package com.hibernate.model; import javax.persistence.Entity; import javax.persistence. ...

  4. oracle checkpoint 详解

    Oracle checkpoint详解 topcheckpoint扫盲 top什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属 ...

  5. python截取中文字符串

    python的中文处理还是比较麻烦的,utf-8的字符串的长度是1-6个字符,一不小心就会从中截断,出现所谓的乱码.下面这个函数提供了,从一段utf-8编码的字符串中,截取固定长度的字串.ord(ch ...

  6. SQLite的查询

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  7. C#算法基础之冒泡排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. (Android)View.getHeight或getWidth为0时的一些解决方案

    在Android开发过程中,经常需要动态的更改View的大小,有些View的大小可能需要根据其他View的大小来设定,或者你需要得到一些View的大小来进行某项操作,但是有可能你需要在onCreate ...

  9. sqlserver关于事务

    事务的四个特性: 原子性,一致性,持久性,隔离性 原子性: 原子性:表示事务执行是作为原子,不可分割,整个语句要么执行,要么不执行sqlserver中每一个单独的语句可以看做是包含在事务中每一句本身具 ...

  10. 我的EntityFramework(2):简单的数据查询

    原文:我的EntityFramework(2):简单的数据查询 在上一篇博文中,已经搭建了基本的框架,接下来就进行简单的数据查询,这里主要用了Linq 常见的数据集查询 var companyList ...