题解 | #合唱队#

合唱队

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

#include <stdio.h>
//基本上从新学了一遍动态规划,真是学时不知知识好,错把美女当成宝!
int main() {
    int str[3001];
    int lmax[3001];
    int lmaxs[3001];
    int rmax[3001];
    int rmaxs[3001];
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&str[i]);
    }
    for(int i=0;i<n;i++)
    {
        lmax[i]=1;
    }
    for(int i=0;i<n;i++)
    {
        lmaxs[i]=1;
    }
    for(int i=0;i<n;i++)
    {
        rmax[i]=1;
    }
    for(int i=0;i<n;i++)
    {
        rmaxs[i]=1;
    }
    for(int i=1;i<n;i++)
    {
        for(int j=i-1;j>=0;j--)
    {
        if(str[i]>str[j])
        {
            if((lmax[j]+1)>lmaxs[i])
            {
                int c,d;
                c=lmaxs[i];
                d=lmax[j];
                lmaxs[i]=lmax[j]+1;
            }
        }
    }
    lmax[i]=lmaxs[i];
    }
     for(int i=n-2;i>=0;i--)
    {
        for(int j=i+1;j<n;j++)
    {
        if(str[i]>str[j])
        {
            if((rmax[j]+1)>rmaxs[i])
            {
                int c,d;
                c=rmaxs[i];
                d=rmax[j];
                rmaxs[i]=rmax[j]+1;
            }
        }
    }
    rmax[i]=rmaxs[i];
    }
    int max;
    max=1;
    for(int i=0;i<n;i++)
    {
        if((lmax[i]+rmax[i]-1)>max)
        {
            int c,d;
                c=lmax[i];
                d=rmax[i];
            max=lmax[i]+rmax[i]-1;
        }
    }
    int min;
    min=n-max;
    printf("%d",min);


}

全部评论

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
11-28 17:48
中山大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务