首页 > 其他 > 详细

HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes

时间:2016-07-29 19:07:14      阅读:190      评论:0      收藏:0      [点我收藏+]

问题链接: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\n\n", s, msg[gettype(s)]);

    return 0;
}


HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes

原文:http://blog.csdn.net/tigerisland45/article/details/52043448

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!