算法Day22 星南二楼(最长升序子序列)

星南二楼(最长升序子序列)

Description

算法Day22 星南二楼(最长升序子序列)_第1张图片

Input

算法Day22 星南二楼(最长升序子序列)_第2张图片

Output

在这里插入图片描述

Sample

算法Day22 星南二楼(最长升序子序列)_第3张图片

代码

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里面最大的,而不是最后一个

你可能感兴趣的:(算法,算法)