状态表示
f[i] :以 a[i] 结尾的所有上升序列的最大值
状态计算
划分依据
根据状态计算的理论,“只从最后一个不同的点“开始分析,根据状态表示可以知道”以 a[i] 结尾的所有上升序列的最大值“,a[i]是相同的,所以a[i]用1来代替。
计算以a[i]结尾的和不以a[i]结尾的最大值
在计算每一个f[i]的时候,都和其他f[1~i-1]进行比较,就可以得到一个当前的最大值
public class MaxLengthNum {
static int[] w = new int[1001];
static int[] f = new int[1001];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numsLength = sc.nextInt();
for (int i = 1; i <= numsLength; i++) {
w[i] = sc.nextInt();
}
int max = 1;
for (int i = 1; i <= numsLength ; i++) {
f[i] = 1;
for (int j = 1; j < i ; j++) {
if (w[i]>w[j]){
f[i] = Math.max(f[i], f[j] + 1);
}
}
max = Math.max(f[i],max);
System.out.println(f[i]);
}
System.out.println(max);
}
}