zoukankan      html  css  js  c++  java
  • 最长上升子序列之基础

    Font Size:Aa Aa Aa

    Description

         给出一个由n个数组成的序列x[1..n],找出它的最长单调上升子序列的长度。即找出最大的长度m和a1,
    a2……,am,使得  a1 < a2 < … … < am 且 x[a1] < x[a2] < … … < x[am]。

    Input

    先输入一个整数t(t<=200)。代表測试组数。

    每组数据先输入一个N,代表有N个数(1<=N<=1000). 输入N个正整数,a1。a2,a3.....an(0<=ai<=100000).

    Output

    每组输出一个整数。代表最长的长度。

    Sample Input

    1
    7
    1  7  3  5  9  4  8

    Sample Output

    4



    代码例如以下:
    #include <stdio.h>
    #define maxn 1005
    int a[maxn];
    int dp[maxn];
    int max(int x,inty)
    {
        returnx>y?

    x:y;

    }
    int main()
    {
        intt,n;
          
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            inti,j;
            for(i=1;i<=n;i++)
                scanf("%d",&a[i]);
            for(i=0;i<=n;i++)
                dp[i]=1;
            intans=0;
            for(i=1;i<=n;i++)
            {
                for(j=1;j<i;j++)
                    if(a[j]<a[i])
                        dp[i]=max(dp[i],dp[j]+1);
                ans=max(dp[i],ans);
            }
            printf("%d ",ans);
        }
        return0;
    }
  • 相关阅读:
    Git
    Shell-sed之替换字符
    Linux IO/NFS tunning 性能优化及检测
    利用Java Flight Recorder(JFR)诊断timing及内存问题
    Get/Post
    SQL-1
    HTTP协议简要
    nmap简单使用
    (C语言)买东西找零钱
    今日错误(C语言)(定义二维数组储存)
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6705560.html
Copyright © 2011-2022 走看看