星南二楼(最长升序子序列)
Description
Input
Output
Sample
代码
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] grid = new int[n];for(int j=0;j<n;j++) {grid[j] = sc.nextInt();}System.out.print(process(grid));}public static int process(int[] array) {int max = 1;int dp[] = new int[array.length+1];for(int i = 1;i<array.length+1;i++) {dp[i] = 1;for (int j = 1; j < i; j++) {if (array[i-1] > array[j-1]) {dp[i] = Math.max(dp[i], dp[j]+1);}}max = Math.max(max,dp[i]);}return max;}}
思路
动态规划,每个元素对之前的元素进行遍历,使用递推方程式计算
同时返回dp里面最大的,而不是最后一个