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;
}
唯一区别是定义数组的时候定义的长度,感觉这个可能对结果有影响?