AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 商店
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

AcWing 482. 合唱队形

作者: 作者的头像   富贵 ,  2022-08-06 07:51:41 ,  所有人可见 ,  阅读 3


1


和Acwing1014登山题代码几乎一样

#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

int main(){
    int N;
    int a[110]; 
    int f1[110],f2[110];
    int res=-1;
    int bug=0;//测试身高是否全部相同的标记

    memset(f1, 0, sizeof f1);
    memset(f2, 0, sizeof f2);   

    cin>>N;
    for(int i=1;i<=N;i++){
        cin>>a[i];
        if(a[i]==a[i-1]&&i>1)
        bug++;
    }

    if(bug==N-1) {
        cout<<N-1;
        return 0;
    }//排除身高全部相同的情况


    for(int i=1;i<=N;i++){
        f1[i]=1;//不要忘记初始化
        for(int j=1;j<=i;j++){
            if(a[j]<a[i]){
                f1[i]=max(f1[i],f1[j]+1);
            }
        }

    }//身高递增


    for(int i=N;i>=1;i--){
        f2[i]=1;//不要忘记初始化
        for(int j=N;j>=i;j--){
            if(a[j]<a[i]){
                f2[i]=max(f2[i],f2[j]+1);
            }
        }

    }//身高递减


    for(int i=1;i<=N;i++){
        for(int j=i+1;j<=N;j++){
            res=max(res,f1[i]+f2[j]);
        }
    }
    cout<<N-res<<endl;

}

0 评论

你确定删除吗?
1024
x

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息