题解 | #合唱队#

合唱队

https://www.nowcoder.com/practice/6d9d69e3898f45169a441632b325c7b4

#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <string.h>

int main() {
    int n;
    scanf("%d",&n);
    int hg[n];
    memset(hg, 0, sizeof(hg));

    for (int i = 0; i<n; i++) {
    scanf("%d ",&hg[i]);
    }
    int l[n],r[n];
    int dp = 0,j,k;
    memset(l, 0, sizeof(l));//保存左边满足条件的同学数(包含自己)
    memset(r, 0, sizeof(r));//保存右边满足条件的同学数

    for (int i = 0; i<n; i++) {//右侧最长下降子序列
            for (j = 0; j<i; j++) {
                if (hg[i]>hg[j]) {
                    l[i] = fmax(l[i],l[j]);
                }               
            }
            l[i] = l[i] + 1;
    }

    for (int i = n-1; i>=0; i--) {  //左侧最长上升子序列
            for (k = n-1; k>i; k--) {
                if (hg[i]>hg[k]) {
                    r[i] = fmax(r[i], r[k]);
                }
            }
            r[i] = r[i] + 1;
    }

    for (int i = 0; i<n; i++) {
        dp = fmax(dp, r[i]+l[i]-1);
    }    
        printf("%d\n", n-dp);
       // printf("%d\n", e);

    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-30 21:35
爱蜜莉雅碳劝退测开:裁员裁大动脉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务