zoukankan      html  css  js  c++  java
  • Hrbust 1835 最长递增子序列(dp)

    最长递增子序列
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 377(132 users) Total Accepted: 170(122 users) Rating: Special Judge: No
    Description
    给出一个数字序列求其最长的递增子序列例如序列(1,7,3,5,9,4,8).

    (1,7)和(3,4,8)是其递增子序列但其最长的递增子序列是(1,3,5,8)。

    Input
    本题有多组测试数据,对于每组测试数据第一行是一个整数n(n<=100)代表序列长度。

    第二行是n个整数。

    Output
    最长递增子序列长度
    Sample Input
    7

    1 7 3 5 9 4 8

    Sample Output
    4

    最长子序列系列,对数列进行遍历,找出当前遍历数字之前的数列中,符合递增条件的(>=)最长长度,并转移继承,符合条件的数字记录下来它的存储长度,并在传递到遍历的数字时+1(遍历数字本身)存储起来

    #include<stdio.h>///超棒!最长递增子序列get√
    #include<string.h>///实际上就是将每个数和前面的前面的最大值比较,选取最大值加上并赋值给正在遍历的数
    #include<algorithm>
    using namespace std;
    int main()
    {
        int i,j,a[1080],dp[1080],n;///两个数组,dp数组和输入数组
        while(scanf("%d",&n)!=EOF)
        {
            for(i=0;i<n;i++)
            {
                scanf("%d",&a[i]);
            }
            memset(dp,0,sizeof(dp));
            int flag;
            int maxn=1;
            dp[0]=1;///初始第一个遍历的数为长度1
            for(i=1;i<n;i++)///开始动态规划
            {
                flag=dp[i];///记录此时遍历数字的长度,一般被初始化为0
                for(j=0;j<i;j++)///检查前面的dp数组中存储的最长长度
                {
                    if(a[i]>a[j]&&dp[j]>flag)///若满足递增条件,且找到了最大长度
                    {
                        flag=dp[j];///记录长度
                    }///如果符合递增序列的条件,那么就将其长度记录,到flag,便于存至第i位作为最长长度
                }
                dp[i]=flag+1;///若遍历过了的i,则将最长长度+1,表示为i的长度
                maxn=max(maxn,dp[i]);///还是直接遍历取最大值吧
            }///作为最长长度,从flag中+1(i本身)记录到第i个数中
    //        for(i=0;i<=n;i++)
    //        {
    //            printf("%d
    ",dp[i]);
    //        }
    //        sort(dp,dp+n);///这里找dp出来的长度最大值,有点小题大做了,但是为了省事
            printf("%d
    ",maxn);
        }
        return 0;
    }
    
  • 相关阅读:
    二叉树(python3版)
    第九章:树回归
    第八章:线性回归
    第七章:集成学习(利用AdaBoost元算法...)
    第六章:支持向量机(SVM)
    第五章:逻辑回归(Logistic 回归)
    第四章:朴素贝叶斯(bayes)
    win8 webview 无法响应部分页面点击事件
    无法激活Windows应用商店应用程序,"XXXXXXXXX"激活请求失败,错误为"应用未启动".
    无法激活windows应用商店应用程序,应用进程已启动,但激活请求失败,错误为“应用未启动”
  • 原文地址:https://www.cnblogs.com/kuronekonano/p/11794358.html
Copyright © 2011-2022 走看看