POJ2533 Longest Ordered Subsequence (线性DP)

设dp[i]表示以i结尾的最长上升子序列的长度。

dp[i]=max(dp[i],dp[j]+1).

复制代码
 1 #include  <map>
 2 #include  <set>
 3 #include  <cmath>
 4 #include  <queue>
 5 #include  <cstdio>
 6 #include  <vector>
 7 #include  <climits>
 8 #include  <cstring>
 9 #include  <cstdlib>
10 #include  <iostream>
11 #include  <algorithm>
12 using namespace std;
13 const int maxn=1010;
14 int dp[maxn],a[maxn];
15 
16 int main(){
17     int n,ans=0;
18     scanf("%d",&n);
19     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
20     memset(dp,0,sizeof(dp));
21     for(int i=1;i<=n;i++){
22         dp[i]=1;
23         for(int j=1;j<i;j++)
24             if(a[j]<a[i])
25                 dp[i]=max(dp[i],dp[j]+1);
26         if(dp[i]>ans) ans=dp[i];
27     }
28     printf("%d\n",ans);
29 }
复制代码

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   YHXo  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示