大意:给你一个字符串,字符串中的hehe可以换成wqnmlgb,问有几种换发?
思路:
1、由分析不难得出连续的he出现的时候f[n]=f[n-1]+f[n-2]。
2、扫描字符串,利用上面算出的f[n]对字符串中出现的hehe进行计算即可
3、各个不连续的hehe串的f[]乘起来就得到了。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 10100
#define M 5050
#define MOD 10007
using namespace std;
int main ()
{
int t, i, j = 1;
int len, sum, num;
int a[M];
char b[N];
a[0] = a[1] = 1;
for (i=2; i<M; i++)
a[i] = (a[i-1] + a[i-2]) % MOD;
scanf ("%d", &t);
while (t --)
{
scanf ("%s", b);
num = 0;
sum = 1;
len = strlen (b);
for (i=0; i<len-1; i++)
if (b[i]==‘h‘ && b[i+1]==‘e‘)
num ++, i++;
else
{
sum = sum * a[num] % MOD;
num = 0;
}
if ( num )
sum = sum * a[num] % MOD;
printf ("Case %d: %d\n", j++, sum);
}
return 0;
}
hdu 4639 Hehe
时间: 2024-12-15 11:51:18