hdu 1544 双向找回文数个数

来源:互联网 发布:windows安装无法继续 编辑:程序博客网 时间:2024/05/21 14:54
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<queue>using namespace std;char s[5050];int main(){    int p,i,half,left,right,cnt;    while(scanf("%s",s)!=EOF)    {        i=strlen(s);        cnt=0;        for(p=0;p<i-1;p++)//遍历的移动 从左向右        {            half=((i-1)-p)/2;            if(((i-1)-p)%2==0)            {                left=p+half-1;                right=p+half+1;            }            else            {                left=p+half;                right=p+half+1;            }            while(left>=p)                if(s[left]==s[right])                {                    cnt++;                    left--;                    right++;                }                else break;        }//从右向左移动        for(p=i-2;p>=1;p--)//总倒数第二项到第一项 因为 从最后一项到第0项会跟上面的部分重复        {            half=p/2;            if(p%2==0)            {                left=half-1;                right=half+1;            }            else            {                left=half;                right=half+1;            }            while(left>=0)            {                if(s[left]==s[right])                {                    cnt++;                    left--;                    right++;                }                else                break;            }        }        printf("%d\n",cnt+i);    }}

原创粉丝点击