做这题一点也不HAPPY
http://acm.hdu.edu.cn/showproblem.php?pid=2617
happy这五个字母的相对位置不能改变;
我写完代码之后一直AC不了。最后对照ACM之家的解题报告才发现bug
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a1,a3,b,a2,a4;
char a[10010];
while(gets(a))
{
a1=a2=a3=a4=b=0;
for(int i=0;a[i]!=0;i++)
{
if(a[i]=='h') a1++;
if(a[i]=='a')
{
if(a1)
{
a2++;a1--;
}
}
if(a[i]=='p')
{
if(a2)
{
b++;
if(b%2==0)
{
a3++;a2--;
}
}/* 上面这段判断P的代码 我第一次写成: if(a[i]=='p')
{
b++;
if(b%2==0&&a2)
{
a3++;a2--;
}
可以执行题目给的sample input 但是对于phapy这个输入就不能判断成功
}
if(a[i]=='y')
{
if(a3)
{
a4++;a3--;
}
}
else continue;
}
cout<<a4<<endl;
}
}
本文针对HDU 2617 Happy问题提供了一个详细的解题思路及代码实现,通过特定的状态转移逻辑来判断字符串中是否包含符合要求的“happy”子序列。
2196

被折叠的 条评论
为什么被折叠?



