个人赛第四场。记录一下这道就我一个人没做出的大水题吧。说实话一开始就想到了正确方法,但是到了最后还是不敢往这个方向敲,总怕超时。当做给自己的教训吧,勇于尝试,并且,永不放弃。
题意:求所给字符串连续子串回文(可以乱序)的数量。
题目链接:
uva 12718
#include<stdio.h>
#include<string.h>
int main()
{
int t;
while(scanf("%d",&t)!=EOF)
{
char a[1005];
int cnt[30];
int i,j,k,z;
int len;
int ans;
int count;
count=0;
for(i=1;i<=t;++i)
{
scanf("%s",a);
len=strlen(a);
count=0;
for(j=0;j<len;++j)
{
memset(cnt,0,sizeof(cnt));
for(z=j;z<len;++z)
{
cnt[a[z]-'a']++;
ans=0;
for(k=0;k<26;++k)
{
if(cnt[k]%2==1)
{
if(ans)
break;
else
ans=1;
}
}
if(k==26)
count++;
}
}
printf("Case %d: %d\n",i,count);
}
}
return 0;
}