题解 | #合唱队#

合唱队

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

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


int main(){

    int n;
    scanf("%d", &n);

    int tall[n];
    memset(tall, 0, sizeof(tall));
    for(int i = 0; i < n; i++){
        scanf("%d", tall + i);
    }

    int inc[n], dec[n], sum[n];
    memset(inc, 0, sizeof(inc));
    memset(dec, 0, sizeof(dec));
    memset(sum, 0, sizeof(sum));

    for(int i = n - 1; i >= 0; i--){
        for(int j = i + 1; j < n; j++)
        {
            if(tall[i] > tall[j] && dec[i] < dec[j] + 1)
                dec[i] = dec[j] + 1;
            }

    }

    for(int i = 0; i < n; i++){
        for(int j = i - 1; j >= 0; j--){
            if(tall[i] > tall[j] && inc[i] < inc[j] + 1){
                inc[i] = inc[j] + 1;
            }
        }

    }


    int max = 0;
    for(int i = 0; i < n; i++){
        sum[i] = inc[i] + dec[i];
        max = max > sum[i] ? max : sum[i];
    }

    printf("%d", n - max - 1);

    return 0;
}

全部评论
找最长的上升、下降子串, inc[i] 记录 i 前面有几个符合规则 (上升) 的数字;dec同理
点赞 回复 分享
发布于 2023-03-06 20:51 美国

相关推荐

不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
10-29 15:38
门头沟学院 Java
榕城小榕树:难道你简历里写了配送路径优化算法?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务