NYOJ 17 单调递增最长子序列
2013-04-03 16:58
176 查看
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
while(n-->0){
String x=input.next();
int len=x.length();
int a[]=new int[len];
for(int i=0;i<len;i++)
a[i]=1;
for(int i=len-2;i>=0;i--){
for(int j=i+1;j<len;j++){
if(x.charAt(i)<x.charAt(j)&&a[i]<a[j]+1)
a[i]=a[j]+1;
}
}
int max=0;
for(int i=0;i<len;i++)
if(max<a[i])
max=a[i];
System.out.println(max);
}
}
}
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
while(n-->0){
String x=input.next();
int len=x.length();
int a[]=new int[len];
for(int i=0;i<len;i++)
a[i]=1;
for(int i=len-2;i>=0;i--){
for(int j=i+1;j<len;j++){
if(x.charAt(i)<x.charAt(j)&&a[i]<a[j]+1)
a[i]=a[j]+1;
}
}
int max=0;
for(int i=0;i<len;i++)
if(max<a[i])
max=a[i];
System.out.println(max);
}
}
}
相关文章推荐
- NYOJ-17 单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列
- NYOJ - 17 - 单调递增最长子序列(动态规划--LIS--单调递增最长子序列)
- NYOJ 17 单调递增最长子序列
- 【NYOJ】题目17单调递增最长子序列
- nyoj--17--单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj17单调递增最长子序列(N*logN)
- nyoj--17--单调递增最长子序列
- nyoj17单调递增最长子序列(dp)
- NYOJ 17 单调递增最长子序列(经典dp)
- DP入门50题(5)——NYoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列 DP
- NYOJ17单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj17-单调递增最长子序列
- 单调递增最长子序列nyoj17