HDU 5642 King's Order
2016-04-01 18:38
561 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5642
题 意:要求你用小写字母a~z生成长度为n的一个合法的字符串,相同字母相邻出现不能超过3个,求有多少种的情况。
思 路:可以采用动态规划来做。
第一:定义dp[i][j]:i表示字符串的长度,j表示该字符串中字符重复的数目。
例如:dp[1][1]
,代表长度为1的字符串,最后一个字符出现的次数为1的字符串可能情况数量。 因为当长度为1时,最后一个字符出现的次数肯定也为1.故,dp[1][1] = 26;///26种小写字母
第二:最后一个新加的字符和前面的字符不一样时,可能的情况有25种
dp[i][1] = ((dp[i-1][1]+dp[i-1][2]+dp[i-1][3])*25)%MOD;
第三:最后一个字符要加1时,新加的字符仅可能和上一个字符一样
dp[i][2] = dp[i-1][1];
同理可得: dp[i][3] =
dp[i-1][2];
代码如下:
题 意:要求你用小写字母a~z生成长度为n的一个合法的字符串,相同字母相邻出现不能超过3个,求有多少种的情况。
思 路:可以采用动态规划来做。
第一:定义dp[i][j]:i表示字符串的长度,j表示该字符串中字符重复的数目。
例如:dp[1][1]
,代表长度为1的字符串,最后一个字符出现的次数为1的字符串可能情况数量。 因为当长度为1时,最后一个字符出现的次数肯定也为1.故,dp[1][1] = 26;///26种小写字母
第二:最后一个新加的字符和前面的字符不一样时,可能的情况有25种
dp[i][1] = ((dp[i-1][1]+dp[i-1][2]+dp[i-1][3])*25)%MOD;
第三:最后一个字符要加1时,新加的字符仅可能和上一个字符一样
dp[i][2] = dp[i-1][1];
同理可得: dp[i][3] =
dp[i-1][2];
代码如下:
#include <stdio.h> #include <iostream> #include <cstring> #include <sstream> #include <cmath> #include <vector> #include <algorithm> using namespace std; typedef long long LL; #define mod 1000000007 LL dp[2014][5]; int main() { memset( dp, 0, sizeof( dp ) ); dp[1][1] = 26; for( int i = 2; i < 2014; i ++ ) { dp[i][1] = ( (dp[i-1][1]+dp[i-1][2]+dp[i-1][3]) * 25 ) %mod; dp[i][2] = dp[i-1][1]; dp[i][3] = dp[i-1][2]; } int T; scanf ( "%d", &T ); while( T-- ) { int n; scanf ( "%d", &n ); printf("%lld\n", (dp [1]+dp [2]+dp [3])%mod ); } return 0; }
相关文章推荐
- Javascript SHA-1:Secure Hash Algorithm
- 详解Android应用中屏幕尺寸的获取及dp和px值的转换
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- LFC1.0.0 版本发布
- Android px、dp、sp之间相互转换
- HP data protector软件学习1--基本角色与基本工作流程
- HP data protector软件学习2--软件组成与界面介绍
- [转]可视化的数据结构和算法
- android中像素单位dp、px、pt、sp的比较
- Android对px和dip进行尺寸转换的方法
- 统计文件中不小于某一长度的单词的个数(泛型算法实现)
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- android 尺寸 dp,sp,px,dip,pt详解
- 使用他人的MD5编码类,修改形成密码串
- Extracting Structured Data from Web Pages
- (译)Cocos2d_for_iPhone_1_Game_Development_Cookbook:1.13使用CCTexture2DMutable调换调色盘
- Java中3DES加密
- DP问题各种模型的状态转移方程
- Refactoring Notes-Refactoring Methods(3)