求子回文串数
从每个位置往两边枚举即可
#include "stdio.h"
#include "string.h"
int main()
{
int le,sum,a,b,i;
char str[5100];
while (gets(str))
{
le=strlen(str);
sum=le;
for (i=1;i<=le-2;i++)
{
a=b=i;
a--;
b++;
while (1)
{
if (a<0 || b>le-1) break;
if (str[a]==str[b]) sum++;
else break;
a--; b++;
}
}
for (i=0;i<=le-2;i++)
{
a=b=i;
b++;
while (1)
{
if (a<0 || b>le-1) break;
if (str[a]==str[b]) sum++;
else break;
a--; b++;
}
}
printf("%d\n",sum);
}
return 0;
}