题目描述:在一个数字序列中,找到一个最长的子序列,使这个子序列是不下降的(非递减的)

    1. #include<cstdio>
    2. #include<vector>
    3. #include<algorithm>
    4. const int maxn = 1000;
    5. int A[maxn], dp[maxn];
    6. int main(){
    7. int n;
    8. scanf("%d", &n);
    9. int ans = -1;
    10. for(int i = 0; i < n; i++) scanf("%d", &A[i]);
    11. for(int i = 0; i < n; i++){
    12. dp[i] = 1;
    13. for(int j = 0; j < i; j++){
    14. if(A[i] >= A[j] && dp[j] + 1 > dp[i]) dp[i] = dp[j] + 1;//如果符合A[i] >= A[j],那么就表示可选,若选了那么dp[i]就 = dp[j] + 1
    15. }
    16. ans = max(ans, dp[i])
    17. }
    18. printf("%d", ans);
    19. //int max = 0;
    20. //for(int i = 0; i < n; i++){
    21. // if(dp[i] > dp[max]) max = i;
    22. //}
    23. //printf("%d", dp[max]);
    24. return 0;
    25. }