题目描述:在一个数字序列中,找到一个最长的子序列,使这个子序列是不下降的(非递减的)
#include<cstdio>#include<vector>#include<algorithm>const int maxn = 1000;int A[maxn], dp[maxn];int main(){int n;scanf("%d", &n);int ans = -1;for(int i = 0; i < n; i++) scanf("%d", &A[i]);for(int i = 0; i < n; i++){dp[i] = 1;for(int j = 0; j < i; j++){if(A[i] >= A[j] && dp[j] + 1 > dp[i]) dp[i] = dp[j] + 1;//如果符合A[i] >= A[j],那么就表示可选,若选了那么dp[i]就 = dp[j] + 1}ans = max(ans, dp[i])}printf("%d", ans);//int max = 0;//for(int i = 0; i < n; i++){// if(dp[i] > dp[max]) max = i;//}//printf("%d", dp[max]);return 0;}
