题解 | #合唱队#

合唱队

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

 反复对两侧递归

#include <stdio.h>
#define max(a,b)(a>b)?a:b;
int howmany[10010],rehowmany[10010],allhowmany[10010];
int n;
int arr[10010];
int maxnum;
void getscore(int *arr)
{
    maxnum=1;
    for(int i=0;i<n;i++)
    {
        howmany[i]=1;
        for(int j=0;j<i;j++)
        if(arr[i]>arr[j])
        howmany[i]=max(howmany[i],howmany[j]+1);
    }
    for(int i=n-1;i>=0;i--)
    {
        rehowmany[i]=1;
        for(int j=n-1;j>i;j--)
        if(arr[i]>arr[j])
        rehowmany[i]=max(rehowmany[i],rehowmany[j]+1);
        allhowmany[i]=howmany[i]+rehowmany[i]-1;
        maxnum=max(maxnum,allhowmany[i]);
    }
    return;
}
int main() {
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    scanf("%d",&arr[i]);
    getscore(arr);
    int a=n-maxnum;
    printf("%d",a);
    return 0;
}

全部评论

相关推荐

10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务