题目地址 : 

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. 一网打尽OkHttp中的缓存问题

    看到很多小伙伴对OkHttp的缓存问题并不是十分了解,于是打算来说说这个问题.用好OkHttp中提供的缓存,可以帮助我们更好的使用Retrofit.Picasso等配合OkHttp使用的框架.OK,废 ...

  2. Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)

    1.之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; im ...

  3. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

    bug来源: 一直在看sift然后就手贱的给 opencv源码做注释,如果在vs里面打开会一直相安无事,但是问题出在我用了notepad++. 这样就报了标题的错误. 因为notepad++会以uni ...

  4. Log4Net(二)之记录日志到文档详解

    原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/log4net-%E4%BA%8C-%E4%B9%8B% ...

  5. MapReduce按照两个字段对数据进行排序

    按照k2排序,要求k2必须是可以比较的,即必须实现WritableComparable接口. 但是如果还想让别的字段(比如v2中的一些字段)参与排序怎么办? 需要重新定义k2....把需要参与排序的字 ...

  6. JAVA基础之理解JNI原理

    JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C.C++)的动态库进行交互,给其它语言发挥优势的机会. 有了J ...

  7. UpdatePanel中执行js

    在UpdatePanel中,直接使用Page.ClientScript.RegisterStartupScript的方式执行javascript,会导致无法执行.原因可能是因为RegisterStar ...

  8. 也谈Asp.net 中的身份验证

    钱李峰 的这篇博文<Asp.net中的认证与授权>已对Asp.net 中的身份验证进行了不错实践.而我这篇博文,是从初学者的角度补充了一些基础的概念,以便能有个清晰的认识. 一.配置安全身 ...

  9. Android中用PULL解析XML

    解析XML的方式有DOM,SAX,PULL,那为什么要在Android中使用PULL解析呢?首先来说一下PULL解析的优点,然后再说一下其他两种解析方式的缺点,答案就清晰可见啦. DOM不适合文档较大 ...

  10. sql常识-LEFT JOIN

    SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键 ...