题目;http://acm.hdu.edu.cn/showproblem.php?pid=5455
题意就是找出所给字符串有多少个满足题目所给条件的子串,重复的也算,坑点是如果有c,f以外的字符也是不满足条件的,还有我被坑了的地方就是当输入很多f的时候,我尽然脑抽的
认为这是不满足条件的,注意这两点就行了,直接暴力
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int t,i,j,x,y,k,z,sum,q,flag,zz;
char yj[];
scanf("%d",&t);
k=;
getchar();
while (t--)
{
sum=;
gets(yj);
i=;x=strlen(yj);
y=x-;z=;zz=;
if (yj[]==' '&&x==)
{
printf("Case #%d: 0\n",k++);
continue;
}
while (yj[i]=='f'||yj[i]==' ')
{
if (yj[i]=='f')
zz++;
i++;
}
while (yj[y]=='f'||yj[y]==' ')
{
if (yj[y]=='f')
z++;
y--;
}
if (i==x)
{
printf("Case #%d: %d\n",k++,(x+)/);
continue;
}
if (i+z<||yj[i]!='c')
{
printf("Case #%d: -1\n",k++);
continue;
}
q=i;flag=;
for (j=i+;j<x;j++)
{ if (yj[j]=='c')
{
sum++;
if (j-q-<) flag=;
q=j;
}
if (yj[j]!='c'&&yj[j]!='f'&&yj[j]!=' ') flag=;
if (flag==) break; }
if (flag==) printf("Case #%d: -1\n",k++);
else printf("Case #%d: %d\n",k++,sum);
} return ;
}