1 条题解
-
0
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int ma=-10;
int dp[maxn];
int a[maxn]={0};
int main(){
int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i];//输入原数组 dp[i]=1;//把dp数组(最长上升子序列)全 体赋为一 for(int j=1;j<i;j++){//a[j]:曾经的最长上升子序列 if(a[j]<a[i]) dp[i]=max(dp[i],dp[j]+1);//截止到a[i]最长的 子序列(每一次用a[j]从1一直找到a[i]) } ma=max(ma,dp[i]);//每输入一个数算截止到这个数的最长上升子序列 } cout<<ma;//输出最长上升子序列 return 0;
}
- 1
信息
- ID
- 36
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 4
- 标签
- 递交数
- 77
- 已通过
- 33
- 上传者