#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100;
int A[N],dp[N];
int main(){
int n;
scanf_s("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&A[i]);
}
int ans=-1;
for(int i=1;i<=n;i++){
dp[i]=1;
for(int j=1;j<i;j++){
if(A[i]>=A[j]&&(dp[j]+1>dp[i])){
dp[i]=dp[j]+1;
}
}
ans=max(ans,dp[i]);
}
printf("%d",ans);
return 0;
}
最长不下降子序列动态规划实现:
最新推荐文章于 2024-07-12 12:45:44 发布
该博客内容主要涉及计算机科学中的动态规划问题。作者探讨了一个经典的算法问题——寻找一个整数数组中最长的递增子序列,并给出了相应的C++代码实现。代码通过动态规划求解,维护一个dp数组记录以每个元素结尾的最长递增子序列长度,最终找到最大值作为答案。
3827

被折叠的 条评论
为什么被折叠?



