NYOJ17单调递增最长子序列
2017-03-30 19:11
295 查看
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
经典动态规划,关于该题解法在刘汝佳《算法竞赛入门经典训练指南》动态规划部分中有详细讲解。
本题中初始化一个dp数组。首先需要确认在同样长度的递增序列时,最后一个字符最小的序列为最优序列。因为在循环到下一个字符时,最后一个字符最小的序列最有可能继续增长。所以在dp数组的每个元素中存入到当前循环位置为止,长度为数组下标的递增序列中最小的最后一个字符。显然该数组为一个递增数组。每次循环到一个新的位置时,用二分法查找小于当前元素的最大位置后插入。此外,博主将dp数组全部初始化为z。在该题中不使用二分插入也可以ac该题。
/*nyoj17 唐小晨000 2016-7-25*/
package Practice;
import java.util.Arrays;
import java.util.Scanner;
public class _0017单调递增最长子序列{
public static void main(String[]args){
int num;
int size;
int max=0;
String str;
char[]dp=new char[26];
Arrays.fill(dp,'z');
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
经典动态规划,关于该题解法在刘汝佳《算法竞赛入门经典训练指南》动态规划部分中有详细讲解。
本题中初始化一个dp数组。首先需要确认在同样长度的递增序列时,最后一个字符最小的序列为最优序列。因为在循环到下一个字符时,最后一个字符最小的序列最有可能继续增长。所以在dp数组的每个元素中存入到当前循环位置为止,长度为数组下标的递增序列中最小的最后一个字符。显然该数组为一个递增数组。每次循环到一个新的位置时,用二分法查找小于当前元素的最大位置后插入。此外,博主将dp数组全部初始化为z。在该题中不使用二分插入也可以ac该题。
/*nyoj17 唐小晨000 2016-7-25*/
package Practice;
import java.util.Arrays;
import java.util.Scanner;
public class _0017单调递增最长子序列{
public static void main(String[]args){
int num;
int size;
int max=0;
String str;
char[]dp=new char[26];
Arrays.fill(dp,'z');
//初始化数组为z Scanner in=new Scanner(System.in); num=in.nextInt(); in.nextLine(); for(int i=0;i<num;i++){ str=in.nextLine(); size=str.length(); for(int x=0;x<size;x++){ char ch=str.charAt(x); int j=0; while(ch>dp[j]) j++; dp[j]=ch; if(j>max){ max=j; } } System.out.println(max+1); Arrays.fill(dp,'z'); max=0; }
} }
相关文章推荐
- nyoj17 单调递增最长子序列(经典dp三)
- nyoj17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17-单调递增最长子序列
- NYOJ 题目17 单调递增最长子序列(动态规划)
- nyoj 17 单调递增最长子序列
- NYOJ_17_单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17-单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj-17-单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17:单调递增最长子序列【二分】
- nyoj17 单调递增最长子序列(dp)
- nyoj17 单调递增最长子序列