2 条题解

  • 0
    @ 2020-08-28 16:42:25

    #include <bits/stdc++.h>
    using namespace std;
    int n,a[100000];
    int f[100001];
    int main(){
    int n;
    cin>>n;
    for(int i=1; i<=n; i++){
    cin>>a[i];
    f[i]=1;
    }
    for(int i=1; i<=n; i++){
    for(int j=1; j<=i; j++){
    if (f[j]%2==1&&a[i]<a[j]||f[j]%2==0&&a[i]>a[j]){
    f[i]=max(f[i],f[j]+1);
    }

    }
    }
    int mx=0;
    for(int i=1; i<=n; i++){
    mx=max(mx,f[i]);
    }
    cout<<mx;
    return 0;
    }
    //真正的题解

  • 0
    @ 2020-08-28 16:36:02

    #include <iostream>
    using namespace std;
    int n;
    int a[10001];
    int f[10001];
    int main()
    {
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
    scanf("%d",&a[i]);
    f[i]=1;
    }
    for (int i=1;i<=n;i++)
    for (int j=1;j<i;j++)
    if ((f[j]%2==1&&a[i]<a[j])||(f[j]%2==0&&a[i]>a[j]))
    f[i]=max(f[i],f[j]+1);
    int temp=0;
    for (int i=1;i<=n;i++)
    temp=max(temp,f[i]);
    printf("%d",temp);
    return 0;
    }

  • 1

信息

ID
1011
难度
9
分类
动态规划 | 动态规划 | LIS 点击显示
标签
递交数
2
已通过
2
通过率
100%
上传者