zoukankan      html  css  js  c++  java
  • 算法题:最长上升子序列

    题目描写叙述
    广场上站着一支队伍。她们是来自全国各地的扭秧歌代表队。如今有她们的身高数据。请你帮忙找出身高依次递增的子序列。 比如队伍的身高数据是(1、7、3、5、9、4、8)。当中依次递增的子序列有(1、7)。(1、3、5、9)。(1、3、4、8)等,当中最长的长度为4。
    输入描写叙述:

    输入包括多组数据,每组数据第一行包括一个正整数n(1≤n≤1000)。

    紧接着第二行包括n个正整数m(1≤n≤10000)。代表队伍中每位队员的身高。

    输出描写叙述:

    相应每一组数据,输出最长递增子序列的长度。

    输入样例:

    7
    1 7 3 5 9 4 8
    6
    1 3 5 2 4 6

    输出样例:

    4
    4

    #include <iostream>
    using namespace std;
    int main()
    {
    
        int n;
        while(cin>>n)
        {
            int m = n;
            int val;
            int *a = new int[n];
            int k = 0;
            while(m--)
            {
                cin>>val;
                a[k++]=val;
            }
            int max=1;
            int *b = new int[n];
            for(int i=0;i<k;i++)
            {
                b[i]=1;
                for(int j=0;j<i;j++)
                {
                    if(a[j]<a[i])
                    {
                      if(b[j]+1>b[i])
                      {
                          b[i]=b[j]+1;
                          if(max<b[i])
                                                max=b[i];
                      }  
                    }
                }
            }
            cout<<max<<endl;
        }
        return 0;
    }
  • 相关阅读:
    62-函数的调用
    40-字符串类型内置方法
    47-Python进阶小结
    44-集合的内置方法
    45-数据类型分类
    43-字典类型内置方法
    42-元组类型内置方法
    41-列表类型内置方法
    es6 Reflect对象详解
    微信小程序之公共组件写法
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7055366.html
Copyright © 2011-2022 走看看