虽然过了但感觉好迷
查看原帖
虽然过了但感觉好迷
91435
YJK23333楼主2024/3/22 02:38

AC代码:

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

经过修改后过了,原版的有时候能AC有时候只有20分,可能是面对不同的数据会有错误。

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

唯一区别是定义数组的时候定义的长度,感觉这个可能对结果有影响?

2024/3/22 02:38
加载中...