NYOJ 17 单调递增最长子序列
2013-04-19 14:23
204 查看
单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB难度:4
描述求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出输出字符串的最长递增子序列的长度
样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <string> #include <vector> #include <cstdio> #include <cmath> #include <map> #define FLAG 0 using namespace std; char s[10005]; int mx,maxi; int f[10005]; int main() { #if(FLAG) freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #endif int n,i,j,len,t; scanf("%d",&n); while(n--) { scanf("%s",s); len=strlen(s); memset(f,0,sizeof(f)); maxi=0; for(i=1;i<len;i++)//动态规划问题,从第二个起遍历整个字符串,拿s[i]与他 { //前面的i个字符相比较,f[i]表示把 mx=0; //当前字符加到前i个字符的任意一个后面的所有情况中 for(j=0;j<i;j++)//能组成的最优(最长)的字符串长度; { if(s[i]>s[j]&&mx<f[j]+1) { mx=f[j]+1;//循环找到最长的长度 } } f[i]=mx;//把最长长度赋给f[i]; if(mx>maxi)maxi=mx; } cout<<maxi+1<<endl; } return 0; }
相关文章推荐
- 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹
- NYOJ17-单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列 (DP) hdu 题目2845 Bean
- nyoj-17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- 单调递增最长子序列 nyoj 17
- NYOJ-17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj_17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ-17-单调递增最长子序列
- NYOJ 17 单调递增最长子序列(动态规划)
- nyoj17单调递增最长子序列
- NYOJ17 单调递增最长子序列(最长单调递增子序列)
- NYOJ 17 单调递增最长子序列(DP)
- NYOJ_17_单调递增最长子序列
- NYOJ 17 单调递增最长子序列 (LIS模板)
- nyoj17 单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列
- NYOJ - 17 - 单调递增最长子序列(动态规划--LIS--单调递增最长子序列)