• HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes【回文+入门练习】


    问题链接HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes基础练习题,用C语言编写程序。

    问题简述:参见上述链接。

    问题分析:(略)

    程序说明

    程序中,使用两个函数封装功能,使得程序更加简洁易懂。

    判定回文时,使用两个数组下标相向移动,是一种常见的套路。


    AC的C语言程序如下:

    /* HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes */
    
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>
    
    #define MAXN 30
    
    char miroralpha[] = "A   3  HIL JM O   2TUVWXY5";
    char mirordigit[] = "1SE Z  8 ";
    char *msg[] = {" -- is not a palindrome."
                   , " -- is a regular palindrome."
                   , " -- is a mirrored string."
                   , " -- is a mirrored palindrome."};
    
    /* 字母镜像 */
    char miror(char c)
    {
        if(isalpha(c))
            return miroralpha[c - 'A'];
        else
            return mirordigit[c - '1'];
    }
    
    /* 计算字符串类型 */
    int gettype(char s[])
    {
        int start, end, p, m;
    
        p = 1;  /* 回文标志 */
        m = 1;  /* 镜像标志 */
    
        start = 0;
        end = strlen(s)-1;
        while(start <= end) {
            if(s[start] != s[end])
                p = 0;
            if(miror(s[start]) != s[end])
                m = 0;
            start++;
            end--;
        }
    
        return m * 2 + p;
    }
    
    int main(void)
    {
        char s[MAXN];
    
        while(scanf("%s", s) != EOF)
            printf("%s%s
    
    ", s, msg[gettype(s)]);
    
        return 0;
    }


  • 相关阅读:
    P4329 [COCI2006-2007#1] Bond
    P4802 [CCO 2015]路短最
    1-4-14:计算邮资
    1-4-13:分段函数
    1-4-12:骑车与走路
    1-4-11:晶晶赴约会
    1-4-10:有一门课不及格的学生
    1-4-09:判断能否被3,5,7整除
    1-4-08:判断一个数能否同时被3和5整除
    1-4-07:收集瓶盖赢大奖
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564538.html
Copyright © 2020-2023  润新知