首页 > 其他分享 >最长增加子数组

最长增加子数组

时间:2023-02-08 23:47:18浏览次数:45  
标签:子串 int maxt maxn 数组 增加 100 最长 dp

子串

要求一定要挨着

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

结果  5

#include<bits/stdc++.h>
using namespace std;
//最长连续增加子串 
int a[100],dp[100],maxn=0;
int main()
{
   int n;
   cin>>n;
   for(int i=0;i<n;i++)
   cin>>a[i];
   for(int i=1;i<n;i++)
   {
       if(a[i]>a[i-1])
       {
           dp[i]=dp[i-1]+1;
           if(dp[i]>maxn)
           maxn=dp[i];
    }
       
       else
       dp[i]=0;
   }
   cout<<maxn;
}

子序列

不一定挨着

有bug要改

#include<bits/stdc++.h>
using namespace std;
//最长连续增加子串 
int a[100],dp[100],maxn=0;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    for(int i=0;i<n;i++)
    {
        int maxt=0; 
           for(int j=0;j<i;j++)
           {
               if(dp[j]>dp[i]&&a[j]>=a[i])
               {
                   dp[i]=dp[j];//更新当前的值 
                   if(dp[i]>maxt)
                   maxt=dp[i];
            }
                   
               if(dp[j]>dp[i]&&a[j]<a[i])
               {
                   dp[i]=dp[j];//更新当前的值 
                   dp[i]++;
                   if(dp[i]>maxt)
                   maxt=dp[i];
                   dp[i]--;
            }
        }
        dp[i]=maxt;
        if(dp[i]>maxn)
        maxn=dp[i];
   }
   cout<<maxn;
}

 

标签:子串,int,maxt,maxn,数组,增加,100,最长,dp
From: https://www.cnblogs.com/weinan030416/p/17103728.html

相关文章

  • 扁平数组转tree
    扁平数组转tree需要用到的测试数据letflatArr=[{id:1,title:'标题1',parent_id:0},{id:2,title:'标题2',parent_id:0},{id:3,title:'标题2-1',......
  • 02.java基础(一)java的基础、方法和数组
    目录Java基础Java特性Java程序运行机制Java基础语法1.数据类型基本类型引用类型数据类型扩展String类型内存分配过程转义字符类型转换变量常量2.运算符逻辑运算符、位运算......
  • C++ 从数组中拿值,每个值不相同
    代码和思路原理就是生成0,n个索引,每个索引不相同即可。索引再到数组拿数据就行#include<iostream>#include<vector>#include<random>usingnamespacestd;defau......
  • log4cxx配置日期回滚策略中增加MaxFileSize属性
    目录1、背景2、实现方式2.1、DailyRollingFileAppender新增MaxFileSize属性2.2、TimeBasedRollingPolicy策略新增maxFileSize的判断3、总结1、背景C++项目,使用log4cxx......
  • 1.6通过地址和索引实现数组
       这一小节是表1-1中出现的基址寄存器和变址寄存器。通过这两个寄存器,我们可以对主内存上特定的内存区域进行划分,从而实现类似数组的操作。   首先,我们用十......
  • 一些c语言题和数组指针
    自学C语言第一题:念数字重点的几个步骤:如何分离一个数intmask=1; intt=a;//为了不改变a的大小,因为a还要参与后续的运算 while(t>9){ t/=10; mask*=10;}/......
  • 数组的常用方法 js 230208
    判断是否是数组头部操作头部添加头部删除尾部操作未位添加push未位删除pop排序sort方法,接收一个参数,完成排序reverse方法,反转查找indexOflastIndexOf转字符串数组拼字符串字......
  • 容器启动后增加挂载
    背景jenkins容器启动后,想要执行docker相关命令,这里需要借助宿主机上的,但是容器已经启动,并建立了相关Jenkins项目,不想在重新运行一个容器弄了参考这篇博客文章https://......
  • javaScript 高级语法 - 数组的forEach filter some,Object.defineProperty()添加对象属
    1.数组的forEach,filter,somevarnumberArray=[1,5,6,3,2,9,7,4,8];//遍历数组numberArray.forEach(function(value,index,array){console.log("当前值:"+value+"当......
  • java数组排序及查找方法
    前言在上一篇文章中,壹哥给大家讲解了数组的扩容、缩容及拷贝方式。接下来在今天的文章中,会给大家讲解更重要的数组排序及查找方法。今天的内容会有点难,希望你不要因此而退......