acwing 895 最长上升子序列1

简介: acwing 895 最长上升子序列1

活动 - AcWing

自己做的时候搞成二维数组了  推荐一维数组

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
typedef long long LL ; 
const LL N = 1010 ;
LL n ;
LL a[N] ; 
LL f[N][N] ;//表示前i个数以j结尾的最长上升子序列长度
 
int main(){
  int n ; cin >> n ;
  for(int i = 1 ; i <= n ; i ++) cin >>a[i] ;
  f[1][1] = 1;
  for(int i = 1 ; i <= n ; i ++) f[i][i] = 1 ;// 每一个数的长度初始化为1
  for(int i = 2 ; i <= n ; i ++){
    for(int j = 1 ; j < i ; j ++){
      f[i][j] = f[i-1][j] ;// 继承前i-1个数的以j结尾的最长上升子序列数
      if(a[i] > a[j]) f[i][i] = max(f[i][i] , f[i-1][j] + 1) ;
                //我们只需要更新f[i][i]的长度因为只有i是新加入的
                //对于每一个符合if条件的 我们都取 当前的 和 加1的 的最大值
    }
  }
  LL ans = 0 ;
  for(int i = 1 ; i <= n ; i ++ ) ans = max(ans , f[n][i]) ;
    //前n个数 找数组中的最大值即为最终答案
  cout << ans << endl ;
  return 0 ;
}
 
//一维数组答案  麻痹我自己写的麻烦了  才发现
#include<iostream>
#include<algorithm>
#include<cstring>
 
using namespace std ;
const int N = 1010 ;
int  a[N] ;
int len[N] ;
int main(){
  int n ; cin >> n ;
  for(int i = 1 ; i <= n ; i ++) cin >> a[i] ;
  
  for(int i = 1 ; i <= n ; i ++){
    len[i] ++ ;
    for(int j = 1 ; j < i ; j ++){
      if(a[j] < a[i]){
        len[i] = max(len[i] , len[j] + 1);
      } 
    }
  }
  int ans = 0 ;
  for(int i = 1 ; i<=n ;i ++) ans = max(ans, len[i]) ;
  cout << ans << endl ;
  return 0; 
}
目录
相关文章
|
机器学习/深度学习 算法
【数学建模竞赛】评价类赛题常用算法解析
【数学建模竞赛】评价类赛题常用算法解析
556 0
|
缓存 NoSQL Java
后端接口性能优化分析-多线程优化(中)
后端接口性能优化分析-多线程优化
322 0
|
算法 计算机视觉
OpenCV(四十):图像分割—漫水填充
OpenCV(四十):图像分割—漫水填充
619 0
水果软件flstudio设置成中文版本的操作步骤
再也用不着给编曲软件FL Studio安装汉化补丁了,今天FL Studio官方不声不响地悄悄更新了FL Studio 20中文版,但一些朋友装完Mac中文版后发现还是英文版,这是怎么回事呢?今天就俩讲一讲正确安装并设置FL中文版的方法。
2399 0
|
域名解析 缓存 监控
ubuntu20.04上安装dnsmasq服务及dns缓存配置
ubuntu20.04 安装dnsmasq服务, 缓存dns,加快网络地址解析
3127 0
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
云安全 人工智能 安全
再登榜首!阿里云蝉联中国公有云网络安全即服务市场份额第一
再登榜首!阿里云蝉联中国公有云网络安全即服务市场份额第一
340 5
|
机器学习/深度学习
2.5天完成1年的MD计算?DeepMind团队基于欧几里得Transformer的新计算方法
【9月更文挑战第3天】DeepMind团队提出了一种基于欧几里得Transformer的新型计算方法,通过机器学习技术大幅提升了分子动力学(MD)模拟的效率和稳定性。此方法利用ML模型预测分子系统的势能面,减少了传统MD模拟中的计算开销。相比传统方法,它不仅显著加快了模拟速度,还提高了稳定性和准确性,并且具有广泛的适用性,可在材料科学和生物学等多个领域推动科学研究的进步。论文详细内容见[此处](https://www.nature.com/articles/s41467-024-50620-6)。尽管如此,该方法仍需更多数据支持及准确性验证。
268 3
|
Linux Android开发 iOS开发
Android经典实战之Kotlin Multiplatform跨平台开发
KMP(Kotlin Multiplatform)是由JetBrains开发的开源技术,让开发者能在多平台间高效重用代码,保留原生编程优势。适用于Android/iOS应用、多平台库及桌面应用开发。KMP支持代码共享、预期与实际声明机制,具备灵活性、稳定性和性能优势。通过Compose Multiplatform可实现跨平台UI共享。开发者可访问官方文档开始学习。
820 1