hdu 4639 Hehe

大意:给你一个字符串,字符串中的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
", j++, sum);
    }
    return 0;
}
本文为博主原创文章,未经博主允许不得转载。
原文地址:https://www.cnblogs.com/alihenaixiao/p/3889615.html