题解 | #合唱队#

合唱队

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

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int len;
    cin>>len;
    int count =len;
    vector<int> talls;
    while(count--)
    {
        int a;
        cin>>a;
        talls.push_back(a);
    }
    //计算左侧最大子串
    vector<int> numL(len,1);
    for(int i = 0; i < len; i++)
    {
        for(int t = 0; t <= i; t++)
        {
            if(talls[i]>talls[t])
            {
                numL[i] = max((numL[t]+1),numL[i]); 
            }

        }
    }
    //计算右侧最大子串
    vector<int>numR(len,1);
    for(int i = len -1; i >=0;i--)
    {
        for(int t = len -1; t>=i;t--)
        {
            if(talls[i]>talls[t])
            {
                numR[i] = max(numR[t]+1,numR[i]); 
            }
        }
    }

    vector<int> num(len,0);
    int maxNum = 0;
    for(int i = 0; i<len;i++)
    {
        num[i] = numL[i]+numR[i]-1;
        if(num[i]>maxNum)
            maxNum = num[i];
    }
    cout<<len-maxNum;

    
    
    

    
    
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

粗心的熊熊求求offer:什么内容都没有还弄两页
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-18 22:30
我看都是谁在卷前端!
秋盈丶:搜了下,20人的公司能收到2000份招呼?真有这么夸张吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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