#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> a,ranks;
int ranked(int);
int main(){
cin>>n;
ranks.resize(n+1);
a.resize(n+1);
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=n;i>=1;i--){
ranks[i]=ranked(i);
}
cout<<ranks[1]<<endl;
}
int ranked(int x){
if(x==n) return 1;
int maxn=1;
for(int i=x;i<=n;i++){
if(a[i]>a[x]){
maxn=max(maxn,ranks[i]+1);
}
}
return maxn;
}
代码如上,带注释,使用的是dp逆推思路,请各位帮忙看看出错在哪