最长不下降子序列(LIS)
2018-03-30 15:36
183 查看
dp[i]表示必须以a[i]结尾的最长不下降子序列的长度
dp[i] = max{1, dp[j] + 1}; // j从1 ~ i-1 且必须满足a[j] <= a[i]
int ans = 0; for(int i = 0; i < n; i++) { for(int j = 1; j < i; j++) { if(a[i] >= a[j]) dp[i] = max(1, dp[j] + 1); } ans = max(dp[i], ans); } printf("%d", ans);
#include<iostream>
using namespace std;
int dp[1000000+10];
int a[1000000+10];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
dp[i]=1;//自身长度为一
}
for(int i=0;i<n;i++)
{
for(int j=1;j<i;j++)
{
if(a[i]>=a[j])
{
dp[i]=max(dp[i],dp[j]+1);//以a[i]结尾最长的序列
}
}
}
cout<<*max_element(dp,dp+n);
return 0;
}
相关文章推荐
- POJ3670Eating Together(LIS最长(非)上升(下降)子序列模板)
- LIS——最长不下降子序列
- 最长不下降子序列(动态规划:LIS)
- 动态规划——最长不下降子序列(LIS)
- 【HDU6197 2017 ACM ICPC Asia Regional Shenyang Online D】【LIS 最长不下降序列】array array array 数列删除恰好K个数,使得恰好
- LIS(Longest Increasing Subsequence)最长上升(不下降)子序列
- POJ3903Stock Exchange&&POJ1631Bridging signals最长上升子序列 &&POJ1887Testing the CATCHER(最长下降子序列)(LIS模版题)
- poj 3670 Eating Together(最长不下降子序列、LIS)
- [线性DP]最长不下降子序列(LIS)
- 最长不下降子序列(LIS)
- 最长上升子序列(LIS)和最长下降子序列(LDS)
- LIS(Longest Increasing Subsequence)最长上升(不下降)子序列
- Vijous系列(1)LIS 最长不下降子序列的应用
- POJ 1887 Testing the CATCHER 最长不下降序列(LIS)问题
- POJ 1887 Testingthe CATCHER (LIS:最长下降子序列)
- (2)最长不下降子序列问题____动态规划
- 求最长不下降序列
- 最长不下降子序列 DP
- 最长上升子序列[LIS]
- LIS 求最长上升子序列长度