题解 | #合唱队形#

合唱队形

https://www.nowcoder.com/practice/cf209ca9ac994015b8caf5bf2cae5c98

#include<cstdio>
#include<iostream>
#define N 100
using namespace std;
int main() {
    int dp[N];
    int before[N];
    int A[N]{0} ;
    int after[N];
    int n ;
    scanf("%d", &n);
    for (int i = 0 ; i < n ; ++i) {
        scanf("%d", &A[i]);
    }
    for (int i = 0 ; i < n ; ++i) {
        before[i] = 0;
        after[i] = 0;
    }
    for (int i = 0 ; i < n ; ++i) {
        before[i] = 0;
        for (int j = 0 ; j < i ; ++j) {
            if (A[j] < A[i]) {
                before[i] = max(before[i], before[j] + 1);
            }
        }
    }
    for (int i = n - 1 ; i >= 0; --i) {
        after[i] = 0;
        for (int j = n - 1 ; j > i; --j) {
            if (A[j] < A[i]) {
                after[i] = max(after[i], after[j] + 1);
            }
        }
    }
    int max = 0;
    for (int i = 0 ; i < n; ++i) {
        dp[i] = after[i] + before[i] + 1;
        if (max < dp[i]) {
            max = dp[i];
        }
    }
    printf("%d\n",n-max);
}

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务