单调递增最长子序列
2017-04-01 10:28
330 查看
4000
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出输出字符串的最长递增子序列的长度
样例输入
样例输出
本题做法是:总是求以第i个字符为最后一个的最长递增子序列,具体实现就是遍历前i-1个字符找到所有比第i个字符要小的字符,从这些字符中找到第j个字符,对第j个字符的要求就是b[j]最大,核心代码:使用a数组存字符,b数组存以第i个字符为最后一个字符的最长递增子序列
核心代码
for(int j=0;j<i;j++)
{
if(a[i]>a[j])
b[i]=max(b[i],b[j]+1);
}
#include<iostream>
#include<stdio.h>
#include<fstream>
#include<string.h>
#include<algorithm>
#define MAX 9999999
using namespace std;
char a[10500];
int b[10500];
int main()
{
int n;
scanf("%d\n",&n);
while(n--)
{
gets(a);
int le=strlen(a);
for(int i=0;i<le;i++)
b[i]=1;
int ma=0;
for(int i=0;i<le;i++)
{
for(int j=0;j<i;j++)
{
if(a[i]>a[j])
b[i]=max(b[i],b[j]+1);
}
ma=max(b[i],ma);
}
printf("%d\n",ma);
}
return 0;
}
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出输出字符串的最长递增子序列的长度
样例输入
3 aaa ababc abklmncdefg
样例输出
1 3 7
本题做法是:总是求以第i个字符为最后一个的最长递增子序列,具体实现就是遍历前i-1个字符找到所有比第i个字符要小的字符,从这些字符中找到第j个字符,对第j个字符的要求就是b[j]最大,核心代码:使用a数组存字符,b数组存以第i个字符为最后一个字符的最长递增子序列
核心代码
for(int j=0;j<i;j++)
{
if(a[i]>a[j])
b[i]=max(b[i],b[j]+1);
}
#include<iostream>
#include<stdio.h>
#include<fstream>
#include<string.h>
#include<algorithm>
#define MAX 9999999
using namespace std;
char a[10500];
int b[10500];
int main()
{
int n;
scanf("%d\n",&n);
while(n--)
{
gets(a);
int le=strlen(a);
for(int i=0;i<le;i++)
b[i]=1;
int ma=0;
for(int i=0;i<le;i++)
{
for(int j=0;j<i;j++)
{
if(a[i]>a[j])
b[i]=max(b[i],b[j]+1);
}
ma=max(b[i],ma);
}
printf("%d\n",ma);
}
return 0;
}
相关文章推荐
- Beautiful People ZOJ - 2319(单调递增最长子序列)
- 单调递增最长子序列
- nyoj-17 单调递增最长子序列
- NYOJ_单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj17 单调递增最长子序列(dp)
- NYOJ-17-单调递增最长子序列
- 单调递增最长子序列(动态规划)
- 最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹
- nyoj 17 单调递增最长子序列 (LIS)
- NYOJ 单调递增最长子序列
- nyoj-17-单调递增最长子序列
- NYOJ-17-单调递增最长子序列【动态规划】
- 单调递增最长子序列
- 单调递增最长子序列
- 单调递增最长子序列
- 单调递增最长子序列
- HDU1950,单调递增最长子序列(n*lgn)算法
- NYOJ_17_单调递增最长子序列