除了顺序变成逆序之外,完全标准的最长递增子序列问题模板问题。
#include <iostream>
using namespace std;
//拦截导弹
int num[30];
int dp[30];
int maxdecrease(int n){
int ans=0;
dp[0]=1;
for(int i=1;i<n;i++){
int before=-1;//前面>=当前值中,最大的连续序列数
int flag=0;//默认前面没有比它大的
for(int j=0;j<i;j++){
if(num[j]>=num[i]){
flag=1;
before=max(before,dp[j]);
}
}
if(flag==0){
dp[i]=1;
}
else{
dp[i]=before+1;
}
}
for(int i=0;i<n;i++){
ans=max(ans,dp[i]);
}
return ans;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>num[i];
}
int ans=maxdecrease(n);
cout<<ans<<endl;
return 0;
}