星南二樓(最長升序子序列)
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里面最大的,而不是最后一個