题意:
给你一个字符串求其中‘happy’出现的个数。。。
因为happy中的四个字符有先后关系,所以a的数目小于等于y的数目,p的数目小于a的二倍,y的数目小于p的二分之一的时候,才可以加上当前位置的。
自己刚开始写了一个很暴力的程序,结果也ac了就是600多ms。
#include"stdio.h"
#include"string.h"
#define N 10005
int min(int a,int b)
{
return a<b?a:b;
}
int main()
{
int i;
int ans;
int h,a,p,y;
char s[N];
while(gets(s))
{
h=a=p=y=0;
for(i=0;s[i];i++)
{
if(s[i]=='h')h++;
else if(s[i]=='a'&&a<h)a++;
else if(s[i]=='p'&&p<2*a)p++;
else if(s[i]=='y'&&y<(p/2))y++;
}
ans=min(min(h,a),min(p,y));
printf("%d\n",ans);
}
return 0;
}