题解 | #Redraiment的走法#最长递增子序列,动规

Redraiment的走法

https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa

import java.util.*;
import java.util.stream.*;
import java.util.regex.*;
import java.util.function.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        /**
        动态规划
        关键是想到 d[i] 的定义: 以第 i 个桩位最后一个踩的桩,的情况下的最长步数
        - d[i]是完整的一次走桩
        */

        int count = in.nextInt();
        int[] zhuangs = new int[count];
        for (int i = 0; i < count; i++) {
            zhuangs[i] = in.nextInt();
        }

        int maxSteps = 0;
        int[] d = new int[count];
        // 初始化动态规划数组
        d[0] = 1;

        for (int i = 1; i < count; i++) {
            // 初始化动态规划数组
            d[i] = 1;
            // 尝试续上之前走过的桩,zhuangs[i] > zhuangs[j]才能续上
            for (int j = 0; j < i; j++) {
                if (zhuangs[i] > zhuangs[j]) {
                    d[i] = Math.max(d[i], d[j]+1);
                }
            }
            maxSteps = Math.max(maxSteps, d[i]);
        }

        System.out.println(maxSteps);
    }
}


全部评论

相关推荐

牛至超人:您好,京东物流岗了解一下吗?负责精加工食品的端到端传输
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务