单调递增最长子序列(南阳理工ACM)
2013-07-06 21:54
239 查看
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入
样例输出
有两种方式可以求解,
解法一:
首先对字符串S1进行从小到大排序,然后删除有序数组相同的字符得到S2。再求S1与S2的最长子串即可(求子串的方法见两个字符串的最长相同子序列)。
排序方法:
View Code
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
有两种方式可以求解,
解法一:
首先对字符串S1进行从小到大排序,然后删除有序数组相同的字符得到S2。再求S1与S2的最长子串即可(求子串的方法见两个字符串的最长相同子序列)。
排序方法:
public static int LongestAddSubsequence(string A) { int longest = 1; int[] dp = new int[A.Length]; for (int i = 0; i < A.Length; i++) dp[i] = 1;//初始话均为1 for (int i = 1; i < A.Length; i++) for (int j = i - 1; j >= 0; j--) if (A[i] > A[j] && dp[i] < dp[j] + 1)//遇到比当前值小,并且长度比当前长度大的就更新当前长度 dp[i] = dp[j] + 1; for (int i = 0; i < A.Length; i++) if (dp[i] > longest) longest = dp[i]; return longest; }
View Code
相关文章推荐
- ACM题:单调递增最长子序列
- 南阳理工OJ_题目17 单调递增最长子序列
- acm练手 单调递增最长子序列
- 【南阳理工】 17 单调递增最长子序列 【模板】
- 南阳理工:单调递增最长子序列
- nyoj 17 单调递增最长子序列
- 经典Dp-单调递增最长子序列(经典dp)
- nyoj--17--单调递增最长子序列
- Beautiful People ZOJ - 2319(单调递增最长子序列)
- 单调递增最长子序列
- nyoj17单调递增最长子序列(dp)
- NYOJ17 单调递增最长子序列(动态规划)
- 【NYOJ】题目17单调递增最长子序列
- ACM17-单调递增最长子序列zy
- NYOJ - 单调递增最长子序列(经典dp)
- 南阳17 单调递增最长子序列
- 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹
- NYOJ--单调递增最长子序列
- 单调递增最长子序列(Lis)
- 17 单调递增最长子序列