hdu 2617(水)

点击打开链接


题意:

给你一个字符串求其中‘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;
}

		


你可能感兴趣的:(HDU,水)