输入样例
7
1 7 3 5 9 4 8
输出样例
4
import java.util.Scanner;
public class Main {
//maxLen[k]表示以a[k]作为终点的最长上升子序列的长度
public static int maxLen[] = new int[1010];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] a = new int[n];
for(int i = 1; i < n; i ++){
a[i] = sc.nextInt();
maxLen[i] = 1;
}
for(int i = 2; i < n; i++){
//每次求以第i个数为终点的最长上升子序列的长度
for(int j = 1; j < i; j++){
//查看以第j个数为终点的最长上升子序列的长度
if(a[i] > a[j]){
maxLen[i] = Math.max(maxLen[i], maxLen[j]+1);
}
}
}
//取maxLen中的最大值
int max = -1;
for(int i = 2; i < n; i++){
if(maxLen[i] > max){
max = maxLen[i];
}
}
System.out.println(max);
}
}
3594

被折叠的 条评论
为什么被折叠?



