HDU 4639 Hehe(字符串动态规划)
来源:互联网 发布:豆角台剧网下载软件 编辑:程序博客网 时间:2024/04/28 04:42
题意:给定一串T串字符串,每个hehe可能有两种意思,要么是就是hehe,要么是wqnmlgb,现在要问这串字符串的意思的可能数模10007
思路:对于连续的he,可以推导,f[i]代表连续i个he表达意思的可能数,f[i]=f[i-1]+f[i-2]。然后,将不同的连续he串之间的可能数相乘即可。(组合原理)
(其实不是通过直接观察得出满足斐波那契数列的,可以推导的)
连续i个he表达可能数,由两部分组成,一部分是:最后一个he独立出来,前面i-1个he自由变换hehe和wqnmlgb(情况数为f[i-1]);另一部分是,最后两个he翻译成wqnmlgb,而前面i-2个he自由变换hehe和wqnmlgb(情况数为f[i-2])。(注意:不应该再考虑最后两个he仍然是hehe的情况,因为这个已经在f[i-1]中包含了)
#include<cstdio>#include<cstring>#define M 10007#define MAXN 10090int ca=0,T,f[MAXN],ans;char str[MAXN];void prework(){ f[1]=1;f[2]=2; for(int i=3;i<MAXN;++i) f[i]=(f[i-1]+f[i-2])%M;}int main(){ prework(); scanf("%d",&T); while(T--) { ans=1; scanf("%s",str); int n=strlen(str); int low=0,high; while(low<n-1) { if(str[low]=='h' && str[low+1]=='e') { high=low+2; while(high<n-1 && str[high]=='h' && str[high+1]=='e') high+=2;//寻找hehe串,最后使得str[low]到str[high-1]全部是he ans=(ans*f[(high-low)/2])%M;//he的个数等于(high-low)/2 low=high; } else low++; } printf("Case %d: %d\n",++ca,ans%M); } return 0;}
- HDU 4639 Hehe(字符串动态规划)
- HDU 4639 Hehe
- HDU 4639 Hehe(DP)
- hdu 4639 Hehe (dp)
- HDU-4639-Hehe
- hdu 4639 Hehe
- HDU 4639 Hehe 解题报告
- hdu - 4639 - Hehe(斐波那契数)
- 2013多校联合4 1008 Hehe (hdu 4639)
- hdu 4639 Hehe(斐波那契)
- HeHe HDU
- hdu 4639 2013多校第四场 hehe Fibonacci 数列,组合计数,字符串处理
- hdu 4639 Hehe 多校第四场
- HDU 5084 HeHe (找规律)
- hdu 5084 HeHe(暴力/找规律)
- HDU 1421 (动态规划)
- hdu 2084(动态规划)
- hdu 4001 (动态规划)
- android Style属性介绍
- 彷徨、茫然
- Linux的/etc/services
- /proc 目录
- 传智播客.Net培训-1
- HDU 4639 Hehe(字符串动态规划)
- java编程思想笔记--内部类部分一
- LINUX定期执行一个PHP文件
- 解决linux redhat6下安装git的问题
- 利用ndk交叉编译x264到arm平台(带neon版本)
- Ubuntu 13.04 安装Emacs 24.3
- 如何利用OpenCV自带的haar training程序训练分类器
- VC 网络编程socket
- 关于多人物场景下遮挡关系的思考