ZOJ-2512

来源:互联网 发布:延安农村淘宝招聘信息 编辑:程序博客网 时间:2024/05/16 05:20

简单模拟,但还是强调细心再细心,再各种条件和情况考虑清楚就行,比如相遇情况和左右回绕

#include<stdio.h>#include<string.h>#include<stdlib.h>int is_symmetric(char *s, int len, int left, int right){    int begin = 1;    while (1)    {        if (s[left] != s[right])        {            return 0;        }        else if (!begin                && (left == right || abs(left - right) == 1                        || (left == 0 && right == len - 1)))        {            return 1;        }        else        {            left = left - 1 < 0 ? len - 1 : left - 1;            right = right + 1 == len ? 0 : right + 1;            begin = 0;        }    }    return 0;}int main(){    char s[1001];    while (gets(s) != NULL)    {        int i, len = strlen(s), sym;        for (i = 0; i < len; i++)        {            int left = i - 1 < 0 ? len - 1 : i - 1;            int right = i + 1 == len ? 0 : i + 1;            sym = is_symmetric(s, len, left, right);            if (sym)            {                printf("Symmetric\n%d\n", i + 1);                break;            }            if (i != len - 1)            {                left = i;                sym = is_symmetric(s, len, left, right);                if (sym)                {                    printf("Symmetric\n%d-%d\n", i + 1, i + 2);                    break;                }            }        }        if (!sym)            printf("Not symmetric\n");    }    return 0;}


0 0