zoukankan      html  css  js  c++  java
  • 回文串uva401(清简出风尘)

    大神之所以是大神,是因为其在任何一次回答前都有着思考

    #include<cstdio>
    #include<cctype>
    #include<cstring>
    using namespace std; 
        const char* rev="A   3  HIL JM O   2TUVWXY51SE Z  8 "; //注意指针符号与数组的关系 
        const char* msg[]={"not a palindrome.","a regular palindrome.","a mirrored string.","a mirrored palidrome."}; 
        //巧妙地利用p,m的数量关系二维数组msg来输出不同结果 
        
        char r(char ch){                      //镜像判断函数 
        if(isalpha(ch))return rev[ch-'A']; //ctype函数:isalpha,idigit,isprint 
        return rev[ch-'0'+25];            //rev数组中,数字在字母之后 
        }
        int main(){
            char s[30];
            while  (scanf("%s",s)==1){
                int len =strlen(s);
                int p=1,m=1;
                for(int i=0;i<(len+1)/2;i++){
                    if(s[i]!=s[len-i-1])p=0;    //不是回文 
                    if(r(s[i])!=s[len-1-i])m=0; //不是镜像 
                }
            printf("%s -- id %s
    
    ",s,msg[2*m+p]); //巧妙地利用p,m的数量关系二维数组msg来输出不同结果 
            }
        return 0;
    } 
  • 相关阅读:
    命令行
    作业三C++
    作业二
    0003---简单的a+b问题
    0002---五层小山
    0001---Hello world
    关于OJ的那些事
    CDQ分治学习笔记
    C++ IO的一些注意点
    Vscode配置C++环境
  • 原文地址:https://www.cnblogs.com/-ifrush/p/10121096.html
Copyright © 2011-2022 走看看