hdu4639 hehe 递推

时间:2023-03-08 21:08:30

此题为递推题 现场比赛中由于心态问题没能快速推出来
定义f[i]为i个连续的he可以表示的语意的个数 则如果第i个he单独考虑f[i]=f[i-1];
如果将第i个he和第i-1个he组合 则其只能表示为wqnmlgb 不然肯定会和前面一种情况重复

代码如下:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<fstream>
#include<string>
using namespace std;
#define M 10007
int f[];
int result;
void init()
{
f[]=;
f[]=;
f[]=;
f[]=;
for(int i=;i<=;i++)
f[i]=(f[i-]+f[i-])%M;
}
int main()
{
string s;
int t;
//freopen("hdu4639.txt","r",stdin);
cin>>t;
init();
int k=;
while(t--)
{
int count=;
cin>>s;
result=; for(int i=;i<s.length();)
{
if(s[i]=='h'&&s[i+]=='e') {count++;i+=;}
else{
if(count>=)
result=(result*f[count])%M;
i++;count=;
} }
if(count>=) result=(result*f[count])%M;
cout<<"Case "<<k++<<": "<<result<<endl;
}
return ;
}