#include<iostream>
using namespace std;
int n,a[25];
int mmax(int a,int b){
return a>b?a:b;
}
int f(int i,int j){
if(i>n) return 0;
else if(a[i]>=j) return mmax(f(i+1,j),f(i+1,a[i])+1);
else if(a[i]<j) return f(i+1,j);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
printf("%d",f(1,-1));
return 0;
}
题解:最长不下降子序列。状态转移方程: f(i,j)=max{f(i+1,j),f(i+1,a[i])+1} 其中a[i]>=j。