HDU-4639-Hehe

131 篇文章 0 订阅

这个题大意是说给你一个字符串,让你求出其可能的含义数。题目中告诉hehe这个单词有2种含义

思路:

1、由分析不难得出连续的he出现的时候f[n]=f[n-1]+f[n-2],很熟悉吧?先预先得到这个

2、扫描字符串,利用上面算出的f[n]对字符串中出现的hehe进行计算即可

比较简单

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int mod=10007;
const int maxn=10100;
const int maxm=21000;
int f[maxm];
char str[maxn];
void Init()
{
    f[0]=f[1]=1;
    for(int i=2;i<maxm;i++)
	f[i]=(f[i-1]+f[i-2])%mod;
}
int main()
{
    Init();
    int T,cas=1;
    scanf("%d",&T);
    while(T--)
    {
	scanf("%s",str);
	int ans=1,len=strlen(str),res=0;
	for(int i=0;i<len-1;i++)
	{
	    if(str[i]=='h'&&str[i+1]=='e')
	    {
		res++;
		i++;
	    }
	    else
	    {
		ans=(ans*f[res])%mod;
		res=0;
	    }
	}
	if(res)
	    ans=(ans*f[res])%mod;
	printf("Case %d: %d\n",cas++,ans);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值