NYOJ 17 单调递增最长子序列
2016-08-09 11:02
155 查看
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出输出字符串的最长递增子序列的长度
样例输入
样例输出
分析:经典dp,从前往后计算即可,不用倒着进行计算
代码:
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出输出字符串的最长递增子序列的长度
样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
分析:经典dp,从前往后计算即可,不用倒着进行计算
代码:
#include<stdio.h> #include<string.h> int dp[10001]; char a[10010]; int main() { int t; scanf("%d",&t); getchar(); while(t--) { int i,j,len,max=1; gets(a); len=strlen(a); for(i=0; i<len; i++) dp[i]=1; for(i=1; i<len; i++) //两层for循环为核心代码 for(j=0; j<i; j++) if(a[i]>a[j]&&dp[i]<dp[j]+1) dp[i]=dp[j]+1; max=dp[0]; for(i=0; i<len; i++) if(max<dp[i]) max=dp[i]; //计算dp的最大值,可以用c++里的*max_element函数直接求最大值 printf("%d\n",max); } return 0; }
相关文章推荐
- nyoj 16 矩形嵌套 & nyoj 17 单调递增最长子序列
- 动态规划之-----单调递增最长子序列(nyoj17)
- NYOJ 单调递增最长子序列 17
- nyoj 17 单调递增最长子序列
- 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹
- NYOJ - 17 - 单调递增最长子序列(动态规划--LIS--单调递增最长子序列)
- NYOJ17-单调递增最长子序列
- nyoj 题目17 单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列 (DP) hdu 题目2845 Bean
- 单调递增最长子序列(NYOJ 17)
- NYOJ-17 单调递增最长子序列
- 单调递增最长子序列 (NYOJ 17) [动态规划]
- NYOJ 17 单调递增最长子序列(DP)
- NYOJ17——单调递增最长子序列
- NYOJ_17_单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ17 单调递增最长子序列(动态规划)
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列(LIS)
- NYOJ 17 单调递增最长子序列