单调递增最长子序列。(详解)
2013-05-04 17:33
197 查看
(这算是经典的DP题型了,我竟然差点忘记了,罪不应该啊。)
[align=left]描述 [/align]
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
[align=left]输入 [/align]
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
[align=left]输出 [/align]
[align=left]输出字符串的最长递增子序列的长度 [/align]
[align=left]样例输入 [/align]
[align=left]3[/align]
[align=left]aaa[/align]
[align=left]ababc[/align]
[align=left]abklmncdefg[/align]
[align=left]样例输出 [/align]
[align=left]1[/align]
[align=left]3[/align]
7
首先就得弄清楚这是DP问题,很明显得DP。开始解题,细心看。
dp[i]表示以i为初始位置的最长递增序列的长度。(a[i]在这个最长序列中)
动态转移方程(自己写的,未免有点挫)dp[e](0<=e<len(数组长度)) = max( dp[i](e<i<len) + 1); 其实i就是e的下一位置。
动态转移方程明显可以看到得倒着来。
for(int i=0; i < len; ++i)
dp[i] = 1;( 开头的是i,所以至少是1,初始化就的赋值为1 )。
i = len - 1;不用考虑,绝对是1;
for(int i = len - 2; i >= 0; --i)
for(int e = i+1; e < len; ++e)(这个正反次序无所谓)
{
if(a[i] < a[e] && a[e] + 1 > a[i]) (a[i] < a[e]是e是i的下一位置的基本条件)(第二个条件是找最大的)
a[i] = a[e] + 1;
}
这些就是核心代码。 如果想不通, 反复思考下。
[align=left]描述 [/align]
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
[align=left]输入 [/align]
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
[align=left]输出 [/align]
[align=left]输出字符串的最长递增子序列的长度 [/align]
[align=left]样例输入 [/align]
[align=left]3[/align]
[align=left]aaa[/align]
[align=left]ababc[/align]
[align=left]abklmncdefg[/align]
[align=left]样例输出 [/align]
[align=left]1[/align]
[align=left]3[/align]
7
首先就得弄清楚这是DP问题,很明显得DP。开始解题,细心看。
dp[i]表示以i为初始位置的最长递增序列的长度。(a[i]在这个最长序列中)
动态转移方程(自己写的,未免有点挫)dp[e](0<=e<len(数组长度)) = max( dp[i](e<i<len) + 1); 其实i就是e的下一位置。
动态转移方程明显可以看到得倒着来。
for(int i=0; i < len; ++i)
dp[i] = 1;( 开头的是i,所以至少是1,初始化就的赋值为1 )。
i = len - 1;不用考虑,绝对是1;
for(int i = len - 2; i >= 0; --i)
for(int e = i+1; e < len; ++e)(这个正反次序无所谓)
{
if(a[i] < a[e] && a[e] + 1 > a[i]) (a[i] < a[e]是e是i的下一位置的基本条件)(第二个条件是找最大的)
a[i] = a[e] + 1;
}
这些就是核心代码。 如果想不通, 反复思考下。
相关文章推荐
- NYOJ 17 单调递增最长子序列 (二分 STL,lower_bound)
- nyist oj 17 单调递增最长子序列 (动态规划经典题)
- NYOJ 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17:单调递增最长子序列【二分】
- 单调递增最长子序列 (动态规划经典题)
- 单调递增最长子序列 南工17
- NYOJ17单调递增最长子序列
- nyist 单调递增最长子序列
- acm练手 单调递增最长子序列
- NYOJ - 单调递增最长子序列
- nyoj17单调递增最长子序列--动态规划-初步
- NYOJ-17-单调递增最长子序列
- 单调递增最长子序列
- 单调递增最长子序列nyoj17
- nyoj17单调递增最长子序列(dp)
- 单调递增最长子序列(nyoj17)
- NYOJ17 单调递增最长子序列(最长单调递增子序列)
- 单调递增最长子序列
- 单调递增最长子序列