#include <bits/stdc++.h> using namespace std; int main() { int n;cin>>n; int arr[n]; int dp[n]; for(int i =0;i<n;i++){ cin>>arr[i]; dp[i] = 1; } for(int i =1;i<n;i++){ for(int j=0;j<i;j++){ //如果前面的大于后面的,则+1 if(arr[j]>=arr[i]){ dp[i] = max(dp[i],dp[j]+1); }else { } } } // for(auto a:dp) // cout<<a<<endl; cout<<*max_element(dp,dp+n); } // 64 位输出请用 printf("%lld")
王道的思路,关键是写出状态转移方程