题意:给一串数字,输出从左往右由小到大的最大长度,即 1 7 3 5 9 4 8,最长为1 3 5 8 或者1 3 4 8等等,长度为4.
思路:DP,从左往右遍历一遍,更新比它小的数,统计此刻长度。
AC java 代码:
import java.util.Scanner;
//3812 KB 1563 ms
public class sdupractice0724DPA {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int[][] arr = new int[n][2];
for (int i = 0; i < n; i++) {
arr[i][0] = scan.nextInt();
arr[i][1] = 1;
}
for (int i = 1; i < n; i++) {
int count = 0;
for (int j = 0; j < i; j++) {
if (arr[i][0] > arr[j][0] && arr[j][1] > count) {
count = arr[j][1];
}
}
arr[i][1] += count;
}
int max = 0;
for (int i = 0; i < n; i++) {
if (arr[i][1] > max)
max = arr[i][1];
}
System.out.println(max);
}
}