895. 最长上升子序列 简单dp
Published on 2022-11-17 23:02 in 暂未分类 with 林动

895. 最长上升子序列 简单dp

    给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。

    输入格式
    第一行包含整数 N。

    第二行包含 N 个整数,表示完整序列。

    输出格式
    输出一个整数,表示最大长度。

    数据范围
    1≤N≤1000,
    −109≤数列中的数≤109
    输入样例:
    7
    3 1 2 1 8 5 6
    输出样例:
    4

    f[i]表示前i个数中且以a[i]结尾的最长递增子序列的长度
    import java.util.*;
    
    public class Main
    {
    	static int N=1005;
    	static int n,f[]=new int [N],a[]=new int [N],ans;
    	public static void main(String args[])
    	{
    		Scanner sc=new Scanner(System.in);
    		n=sc.nextInt();
    		for(int i=1;i<=n;++i)a[i]=sc.nextInt();
    		for(int i=1;i<=n;++i)
    		{
    			f[i]=1;
    			for(int j=1;j<i;++j)
    			{
    				if(a[i]>a[j]&&f[i]<=f[j])f[i]=f[j]+1;
    			}
    			ans=Math.max(ans, f[i]);
    		}
    		System.out.println(ans);
    	}
    }
    
    posted @   林动  阅读(5)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 终于写完轮子一部分:tcp代理 了,记录一下
    · 震惊!C++程序真的从main开始吗?99%的程序员都答错了
    · 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
    · 单元测试从入门到精通
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    点击右上角即可分享
    微信分享提示